{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div style=\"border:solid Chocolate 2px; padding: 40px\">\n",
    "    \n",
    " <b>Добрый день, Александр!</b>\n",
    "    \n",
    "Меня зовут Ксения Цыганова, и я буду комментировать твою работу и помогать тебе сделать ее сильнее. В Практикуме мы общаемся на «ты», но если тебе это будет некомфортно, пожалуйста, скажи, и мы будем обращаться друг к другу на «вы».\n",
    "    \n",
    "Все мои комментарии делятся на три вида:\n",
    "\n",
    "    \n",
    "👍 Здесь все отлично, идем дальше! - <font color='green'> зеленый цвет </font>\n",
    "    \n",
    "💡 Все хорошо, однако, можно оптимизировать или рассмотреть другие способы (необязательно для исполнения, чтобы пройти дальше) - <font color='gold'>желтый цвет</font>\n",
    "    \n",
    "🤔 Необходимо внести исправления, без которых я не смогу принять проект - <font color='red'>красный цвет</font>\n",
    "    \n",
    "    \n",
    "Свои комментарии я буду выделять заголовком «комментарий ревьюера». Пожалуйста, не удаляй их, это поможет сократить время проверки на повторных ревью.Ты также можешь писать свои комментарии к моим и выделять их любым понравившимся способом, отличным от моего. Если у тебя будут возникать вопросы в течение нашей работы, я с радостью на них отвечу.\n",
    "\n",
    "Цель моего ревью не критика и не возможность дать тебе готовые ответы, это способ привести тебя в нужное русло, чтобы ты смог развить собственные идеи и решения. Твой будущий работодатель будет поступать похожим образом. \n",
    "        \n",
    "   <b>У тебя все получится!</b>\n",
    "    \n",
    "<div class=\"alert alert-info\", padding: 15px>\n",
    "<strong>Комментарий студента:</strong>\n",
    "    Привет! Меня зовут Александр, приятно познакомиться! Буду рад улучшить свою работу с твоей помощью.\n",
    "</div>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div style=\"border:solid Chocolate 2px; padding: 40px\">\n",
    "    \n",
    "Привет, Александр, буду рада помочь!"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Прогнозирование оттока клиентов в сети отелей «Как в гостях»"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Заказчик этого исследования — сеть отелей «Как в гостях».\n",
    "Чтобы привлечь клиентов, эта сеть отелей добавила на свой сайт возможность забронировать номер без предоплаты. Однако если клиент отменял бронирование, то компания терпела убытки. Сотрудники отеля могли, например, закупить продукты к приезду гостя или просто не успеть найти другого клиента.\n",
    "Чтобы решить эту проблему, вам нужно разработать систему, которая предсказывает отказ от брони. Если модель покажет, что бронь будет отменена, то клиенту предлагается внести депозит. Размер депозита — 80% от стоимости номера за одни сутки и затрат на разовую уборку. Деньги будут списаны со счёта клиента, если он всё же отменит бронь."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-success\">\n",
    "<h2> Комментарий ревьюера <a class=\"tocSkip\"> </h2>\n",
    "\n",
    "<b>Все отлично!👍:</b> \n",
    "    \n",
    "Отлично, что есть вступительный комментарий"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Шаг 1. Откройте файлы с данными"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Для достижения поставленной задачи необходимо будет протестировать 3 различных модели машинного обучения и выбрать ту, предсказания который принесут компании наибольшую прибыль. Перед исследованием требуется провести работу над входными данными - предобработка, исследовательский анализ данных и последующая нормализация. Далее потребуется рассчитать прибыль компании без введения депозитов и затрат на внедрение моделей машинного обучения. Затем нужно построить модели для предсказания отмены бронирования, на основе чего снизить предстоящий убыток введением депозита. В конце оценим прибыль компании после внедрения депозита."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Collecting imblearn\n",
      "  Downloading imblearn-0.0-py2.py3-none-any.whl (1.9 kB)\n",
      "Collecting imbalanced-learn\n",
      "  Downloading imbalanced_learn-0.11.0-py3-none-any.whl (235 kB)\n",
      "\u001b[K     |████████████████████████████████| 235 kB 1.4 MB/s eta 0:00:01\n",
      "\u001b[?25hCollecting scikit-learn>=1.0.2\n",
      "  Downloading scikit_learn-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.9 MB)\n",
      "\u001b[K     |████████████████████████████████| 10.9 MB 20.2 MB/s eta 0:00:01\n",
      "\u001b[?25hCollecting joblib>=1.1.1\n",
      "  Downloading joblib-1.3.1-py3-none-any.whl (301 kB)\n",
      "\u001b[K     |████████████████████████████████| 301 kB 65.9 MB/s eta 0:00:01\n",
      "\u001b[?25hRequirement already satisfied: numpy>=1.17.3 in /opt/conda/lib/python3.9/site-packages (from imbalanced-learn->imblearn) (1.21.1)\n",
      "Requirement already satisfied: scipy>=1.5.0 in /opt/conda/lib/python3.9/site-packages (from imbalanced-learn->imblearn) (1.9.1)\n",
      "Requirement already satisfied: threadpoolctl>=2.0.0 in /opt/conda/lib/python3.9/site-packages (from imbalanced-learn->imblearn) (3.1.0)\n",
      "Installing collected packages: joblib, scikit-learn, imbalanced-learn, imblearn\n",
      "  Attempting uninstall: joblib\n",
      "    Found existing installation: joblib 1.1.0\n",
      "    Uninstalling joblib-1.1.0:\n",
      "      Successfully uninstalled joblib-1.1.0\n",
      "  Attempting uninstall: scikit-learn\n",
      "    Found existing installation: scikit-learn 0.24.1\n",
      "    Uninstalling scikit-learn-0.24.1:\n",
      "      Successfully uninstalled scikit-learn-0.24.1\n",
      "Successfully installed imbalanced-learn-0.11.0 imblearn-0.0 joblib-1.3.1 scikit-learn-1.3.0\n"
     ]
    }
   ],
   "source": [
    "!pip install imblearn"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-warning\">\n",
    "    <h2> Комментарий ревьюера №3<a class=\"tocSkip\"> </h2>\n",
    "    \n",
    "<b>Некоторые замечания и рекомендации💡:</b> \n",
    "        \n",
    "Во избежание неприятных ситуаций, пожалуйста, не забывай добавлять установку используемых библиотек и версии модулей, используемых в проекте. Так как иначе при перезагрузке на платформе код выдает ошибку и ревьюер имеет право отправить проект на доработку без проверки.\n",
    "<div class=\"alert alert-info\", padding: 15px>\n",
    "<strong>Комментарий студента:</strong>\n",
    "    Да, хорошо. Я видел, что присутствует данная ошибка но не знал как это реализовать в тетрадке.\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "import warnings\n",
    "\n",
    "from math import ceil\n",
    "\n",
    "from pandas.api.types import is_string_dtype\n",
    "\n",
    "from tqdm import tqdm\n",
    "\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.exceptions import DataConversionWarning\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.metrics import accuracy_score, f1_score, roc_curve, auc\n",
    "from sklearn.model_selection import cross_val_score, KFold, GridSearchCV\n",
    "from sklearn.preprocessing import StandardScaler, OneHotEncoder\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "\n",
    "from imblearn.over_sampling import SMOTE\n",
    "from imblearn.pipeline import Pipeline, make_pipeline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "warnings.filterwarnings(action='ignore', category=DataConversionWarning)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-success\">\n",
    "<h2> Комментарий ревьюера <a class=\"tocSkip\"> </h2>\n",
    "\n",
    "    \n",
    "<b>Все отлично!👍:</b> \n",
    "    \n",
    "Отлично, что все импорты собраны в начале проекта. Это поможет в случае чего сразу увидеть, какие библиотеки следует доустановить."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-warning\">\n",
    "    <h2> Комментарий ревьюера <a class=\"tocSkip\"> </h2>\n",
    "    \n",
    "<b>Некоторые замечания и рекомендации💡:</b> \n",
    "\n",
    "\"Согласно руководству по написанию кода PEP8 все импорты должны располагаться сразу после комментариев к модулю и строк документации, но перед объявлением констант. При этом группировать их желательно в следующем порядке:\n",
    "\n",
    "импорты из стандартной библиотеки,\n",
    "импорты из сторонних библиотек,\n",
    "импорты пользовательских модулей текущего проекта.\"\n",
    "        \n",
    "И между группами стоит оставлять пустую строку.\n",
    "        \n",
    "        \n",
    "Вот еще хорошая статья:\n",
    "        \n",
    "https://okpython.net/python/python_uchebnik/osnovy/moduli_i_pakety_v_python.html\n",
    "        \n",
    "Какие модули входят в стандартную библиотеку можно посмотреть вот здесь:\n",
    "        \n",
    "https://docs.python.org/3/library/exceptions.html#warnings\n",
    "      \n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "FileNotFoundError(2, 'No such file or directory')"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "try:\n",
    "    hotel_test = pd.read_csv('datasets/hotel_test.csv')\n",
    "    hotel_train = pd.read_csv('datasets/hotel_train.csv')\n",
    "except Exception as info:\n",
    "    display(info)\n",
    "    hotel_test = pd.read_csv('https://code.s3.yandex.net/datasets/hotel_test.csv')\n",
    "    hotel_train = pd.read_csv('https://code.s3.yandex.net/datasets/hotel_train.csv')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-warning\">\n",
    "    <h2> Комментарий ревьюера <a class=\"tocSkip\"> </h2>\n",
    "    \n",
    "<b>Некоторые замечания и рекомендации💡:</b> \n",
    "        \n",
    "Для загрузки данных можно использовать библиотеку os или констукцию try/except. Это поможет работать с проектом как локально, так и через Jupyter Hub, не внося дополнительных правок.\n",
    "        \n",
    "<div class=\"alert alert-info\", padding: 15px>\n",
    "<strong>Комментарий студента:</strong>\n",
    "    Использовал конструкцию try/except.\n",
    "</div>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-success\">\n",
    "<h2> Комментарий ревьюера №2<a class=\"tocSkip\"> </h2>\n",
    "\n",
    "    \n",
    "<b>Все отлично!👍</b> "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def describe_dataframe(dataframe):\n",
    "    display(dataframe.head(10))\n",
    "    display(dataframe.info())\n",
    "    display(dataframe.describe(percentiles=[.5]).T)\n",
    "    print(f\"Количество дублированных строк: {dataframe.duplicated().sum()}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-success\">\n",
    "<h2> Комментарий ревьюера <a class=\"tocSkip\"> </h2>\n",
    "\n",
    "<b>Все отлично!👍:</b> \n",
    "    \n",
    "Отлично, что оптимизируешь свой код с помощью пользовательских функций."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Описание колонок по условию:\n",
    "В таблицах hotel_train и hotel_test содержатся одинаковые столбцы:\n",
    "id — номер записи;\n",
    "adults — количество взрослых постояльцев;\n",
    "arrival_date_year — год заезда;\n",
    "arrival_date_month — месяц заезда;\n",
    "arrival_date_week_number — неделя заезда;\n",
    "arrival_date_day_of_month — день заезда;\n",
    "babies — количество младенцев;\n",
    "booking_changes — количество изменений параметров заказа;\n",
    "children — количество детей от 3 до 14 лет;\n",
    "country — гражданство постояльца;\n",
    "customer_type — тип заказчика:\n",
    "Contract — договор с юридическим лицом;\n",
    "Group — групповой заезд;\n",
    "Transient — не связано с договором или групповым заездом;\n",
    "Transient-party — не связано с договором или групповым заездом, но связано с бронированием типа Transient.\n",
    "days_in_waiting_list — сколько дней заказ ожидал подтверждения;\n",
    "distribution_channel — канал дистрибуции заказа;\n",
    "is_canceled — отмена заказа;\n",
    "is_repeated_guest — признак того, что гость бронирует номер второй раз;\n",
    "lead_time — количество дней между датой бронирования и датой прибытия;\n",
    "meal — опции заказа:\n",
    "SC — нет дополнительных опций;\n",
    "BB — включён завтрак;\n",
    "HB — включён завтрак и обед;\n",
    "FB — включён завтрак, обед и ужин.\n",
    "previous_bookings_not_canceled — количество подтверждённых заказов у клиента;\n",
    "previous_cancellations — количество отменённых заказов у клиента;\n",
    "required_car_parking_spaces — необходимость места для автомобиля;\n",
    "reserved_room_type — тип забронированной комнаты;\n",
    "stays_in_weekend_nights — количество ночей в выходные дни;\n",
    "stays_in_week_nights — количество ночей в будние дни;\n",
    "total_nights — общее количество ночей;\n",
    "total_of_special_requests — количество специальных отметок."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Тестовый датафрейм"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>is_canceled</th>\n",
       "      <th>lead_time</th>\n",
       "      <th>arrival_date_year</th>\n",
       "      <th>arrival_date_month</th>\n",
       "      <th>arrival_date_week_number</th>\n",
       "      <th>arrival_date_day_of_month</th>\n",
       "      <th>stays_in_weekend_nights</th>\n",
       "      <th>stays_in_week_nights</th>\n",
       "      <th>adults</th>\n",
       "      <th>...</th>\n",
       "      <th>is_repeated_guest</th>\n",
       "      <th>previous_cancellations</th>\n",
       "      <th>previous_bookings_not_canceled</th>\n",
       "      <th>reserved_room_type</th>\n",
       "      <th>booking_changes</th>\n",
       "      <th>days_in_waiting_list</th>\n",
       "      <th>customer_type</th>\n",
       "      <th>required_car_parking_spaces</th>\n",
       "      <th>total_of_special_requests</th>\n",
       "      <th>total_nights</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>6086</td>\n",
       "      <td>1</td>\n",
       "      <td>74.0</td>\n",
       "      <td>2017</td>\n",
       "      <td>January</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>A</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Transient</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>6087</td>\n",
       "      <td>1</td>\n",
       "      <td>62.0</td>\n",
       "      <td>2017</td>\n",
       "      <td>January</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>A</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Transient</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>6088</td>\n",
       "      <td>1</td>\n",
       "      <td>62.0</td>\n",
       "      <td>2017</td>\n",
       "      <td>January</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>A</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Transient</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>6089</td>\n",
       "      <td>1</td>\n",
       "      <td>71.0</td>\n",
       "      <td>2017</td>\n",
       "      <td>January</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>A</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Transient</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>6090</td>\n",
       "      <td>1</td>\n",
       "      <td>172.0</td>\n",
       "      <td>2017</td>\n",
       "      <td>January</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "      <td>2.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>A</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Transient</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>6091</td>\n",
       "      <td>1</td>\n",
       "      <td>52.0</td>\n",
       "      <td>2017</td>\n",
       "      <td>January</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "      <td>1.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>A</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Transient</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>6092</td>\n",
       "      <td>1</td>\n",
       "      <td>143.0</td>\n",
       "      <td>2017</td>\n",
       "      <td>January</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>A</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>Transient</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>6093</td>\n",
       "      <td>1</td>\n",
       "      <td>21.0</td>\n",
       "      <td>2017</td>\n",
       "      <td>January</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>2.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>A</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Transient</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>6094</td>\n",
       "      <td>1</td>\n",
       "      <td>89.0</td>\n",
       "      <td>2017</td>\n",
       "      <td>January</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>2.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>E</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Transient</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>6095</td>\n",
       "      <td>1</td>\n",
       "      <td>48.0</td>\n",
       "      <td>2017</td>\n",
       "      <td>January</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>2.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>A</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>Transient</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>10 rows × 25 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     id  is_canceled  lead_time  arrival_date_year arrival_date_month  \\\n",
       "0  6086            1       74.0               2017            January   \n",
       "1  6087            1       62.0               2017            January   \n",
       "2  6088            1       62.0               2017            January   \n",
       "3  6089            1       71.0               2017            January   \n",
       "4  6090            1      172.0               2017            January   \n",
       "5  6091            1       52.0               2017            January   \n",
       "6  6092            1      143.0               2017            January   \n",
       "7  6093            1       21.0               2017            January   \n",
       "8  6094            1       89.0               2017            January   \n",
       "9  6095            1       48.0               2017            January   \n",
       "\n",
       "   arrival_date_week_number  arrival_date_day_of_month  \\\n",
       "0                         1                          1   \n",
       "1                         1                          1   \n",
       "2                         1                          1   \n",
       "3                         1                          1   \n",
       "4                         1                          1   \n",
       "5                         1                          1   \n",
       "6                         1                          2   \n",
       "7                         1                          2   \n",
       "8                         1                          2   \n",
       "9                         1                          2   \n",
       "\n",
       "   stays_in_weekend_nights  stays_in_week_nights  adults  ...  \\\n",
       "0                        1                     0     2.0  ...   \n",
       "1                        2                     2     2.0  ...   \n",
       "2                        2                     2     2.0  ...   \n",
       "3                        2                     2     1.0  ...   \n",
       "4                        2                     5     2.0  ...   \n",
       "5                        2                     5     1.0  ...   \n",
       "6                        1                     1     2.0  ...   \n",
       "7                        1                     3     2.0  ...   \n",
       "8                        1                     3     2.0  ...   \n",
       "9                        1                     4     2.0  ...   \n",
       "\n",
       "   is_repeated_guest  previous_cancellations previous_bookings_not_canceled  \\\n",
       "0                  0                       0                              0   \n",
       "1                  0                       0                              0   \n",
       "2                  0                       0                              0   \n",
       "3                  0                       0                              0   \n",
       "4                  0                       0                              0   \n",
       "5                  0                       0                              0   \n",
       "6                  0                       0                              0   \n",
       "7                  0                       0                              0   \n",
       "8                  0                       0                              0   \n",
       "9                  0                       0                              0   \n",
       "\n",
       "  reserved_room_type booking_changes  days_in_waiting_list  customer_type  \\\n",
       "0   A                              0                     0      Transient   \n",
       "1   A                              0                     0      Transient   \n",
       "2   A                              0                     0      Transient   \n",
       "3   A                              0                     0      Transient   \n",
       "4   A                              0                     0      Transient   \n",
       "5   A                              0                     0      Transient   \n",
       "6   A                              1                     0      Transient   \n",
       "7   A                              0                     0      Transient   \n",
       "8   E                              0                     0      Transient   \n",
       "9   A                              1                     0      Transient   \n",
       "\n",
       "   required_car_parking_spaces total_of_special_requests  total_nights  \n",
       "0                            0                         0             1  \n",
       "1                            0                         1             4  \n",
       "2                            0                         1             4  \n",
       "3                            0                         1             4  \n",
       "4                            0                         0             7  \n",
       "5                            0                         0             7  \n",
       "6                            0                         1             2  \n",
       "7                            0                         1             4  \n",
       "8                            0                         0             4  \n",
       "9                            0                         2             5  \n",
       "\n",
       "[10 rows x 25 columns]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 32412 entries, 0 to 32411\n",
      "Data columns (total 25 columns):\n",
      " #   Column                          Non-Null Count  Dtype  \n",
      "---  ------                          --------------  -----  \n",
      " 0   id                              32412 non-null  int64  \n",
      " 1   is_canceled                     32412 non-null  int64  \n",
      " 2   lead_time                       32412 non-null  float64\n",
      " 3   arrival_date_year               32412 non-null  int64  \n",
      " 4   arrival_date_month              32412 non-null  object \n",
      " 5   arrival_date_week_number        32412 non-null  int64  \n",
      " 6   arrival_date_day_of_month       32412 non-null  int64  \n",
      " 7   stays_in_weekend_nights         32412 non-null  int64  \n",
      " 8   stays_in_week_nights            32412 non-null  int64  \n",
      " 9   adults                          32412 non-null  float64\n",
      " 10  children                        32412 non-null  float64\n",
      " 11  babies                          32412 non-null  float64\n",
      " 12  meal                            32412 non-null  object \n",
      " 13  country                         32412 non-null  object \n",
      " 14  distribution_channel            32412 non-null  object \n",
      " 15  is_repeated_guest               32412 non-null  int64  \n",
      " 16  previous_cancellations          32412 non-null  int64  \n",
      " 17  previous_bookings_not_canceled  32412 non-null  int64  \n",
      " 18  reserved_room_type              32412 non-null  object \n",
      " 19  booking_changes                 32412 non-null  int64  \n",
      " 20  days_in_waiting_list            32412 non-null  int64  \n",
      " 21  customer_type                   32412 non-null  object \n",
      " 22  required_car_parking_spaces     32412 non-null  int64  \n",
      " 23  total_of_special_requests       32412 non-null  int64  \n",
      " 24  total_nights                    32412 non-null  int64  \n",
      "dtypes: float64(4), int64(15), object(6)\n",
      "memory usage: 6.2+ MB\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "None"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>min</th>\n",
       "      <th>50%</th>\n",
       "      <th>max</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>id</th>\n",
       "      <td>32412.0</td>\n",
       "      <td>60131.505183</td>\n",
       "      <td>29953.586177</td>\n",
       "      <td>6086.0</td>\n",
       "      <td>53394.5</td>\n",
       "      <td>97903.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>is_canceled</th>\n",
       "      <td>32412.0</td>\n",
       "      <td>0.388467</td>\n",
       "      <td>0.487409</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>lead_time</th>\n",
       "      <td>32412.0</td>\n",
       "      <td>97.587869</td>\n",
       "      <td>86.507146</td>\n",
       "      <td>0.0</td>\n",
       "      <td>76.0</td>\n",
       "      <td>373.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>arrival_date_year</th>\n",
       "      <td>32412.0</td>\n",
       "      <td>2017.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2017.0</td>\n",
       "      <td>2017.0</td>\n",
       "      <td>2017.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>arrival_date_week_number</th>\n",
       "      <td>32412.0</td>\n",
       "      <td>17.804054</td>\n",
       "      <td>9.177384</td>\n",
       "      <td>1.0</td>\n",
       "      <td>18.0</td>\n",
       "      <td>35.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>arrival_date_day_of_month</th>\n",
       "      <td>32412.0</td>\n",
       "      <td>15.656948</td>\n",
       "      <td>8.766429</td>\n",
       "      <td>1.0</td>\n",
       "      <td>15.5</td>\n",
       "      <td>31.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>stays_in_weekend_nights</th>\n",
       "      <td>32412.0</td>\n",
       "      <td>0.867888</td>\n",
       "      <td>0.853394</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>stays_in_week_nights</th>\n",
       "      <td>32412.0</td>\n",
       "      <td>2.340090</td>\n",
       "      <td>1.375170</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>adults</th>\n",
       "      <td>32412.0</td>\n",
       "      <td>1.858602</td>\n",
       "      <td>0.489341</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>children</th>\n",
       "      <td>32412.0</td>\n",
       "      <td>0.083765</td>\n",
       "      <td>0.343470</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>babies</th>\n",
       "      <td>32412.0</td>\n",
       "      <td>0.005523</td>\n",
       "      <td>0.075757</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>is_repeated_guest</th>\n",
       "      <td>32412.0</td>\n",
       "      <td>0.031377</td>\n",
       "      <td>0.174338</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>previous_cancellations</th>\n",
       "      <td>32412.0</td>\n",
       "      <td>0.011601</td>\n",
       "      <td>0.180473</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>previous_bookings_not_canceled</th>\n",
       "      <td>32412.0</td>\n",
       "      <td>0.171418</td>\n",
       "      <td>1.875170</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>72.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>booking_changes</th>\n",
       "      <td>32412.0</td>\n",
       "      <td>0.216741</td>\n",
       "      <td>0.640551</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>18.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>days_in_waiting_list</th>\n",
       "      <td>32412.0</td>\n",
       "      <td>0.262341</td>\n",
       "      <td>4.733027</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>223.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>required_car_parking_spaces</th>\n",
       "      <td>32412.0</td>\n",
       "      <td>0.046248</td>\n",
       "      <td>0.219367</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>8.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>total_of_special_requests</th>\n",
       "      <td>32412.0</td>\n",
       "      <td>0.657781</td>\n",
       "      <td>0.834341</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>total_nights</th>\n",
       "      <td>32412.0</td>\n",
       "      <td>3.207979</td>\n",
       "      <td>1.738683</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                  count          mean           std     min  \\\n",
       "id                              32412.0  60131.505183  29953.586177  6086.0   \n",
       "is_canceled                     32412.0      0.388467      0.487409     0.0   \n",
       "lead_time                       32412.0     97.587869     86.507146     0.0   \n",
       "arrival_date_year               32412.0   2017.000000      0.000000  2017.0   \n",
       "arrival_date_week_number        32412.0     17.804054      9.177384     1.0   \n",
       "arrival_date_day_of_month       32412.0     15.656948      8.766429     1.0   \n",
       "stays_in_weekend_nights         32412.0      0.867888      0.853394     0.0   \n",
       "stays_in_week_nights            32412.0      2.340090      1.375170     0.0   \n",
       "adults                          32412.0      1.858602      0.489341     0.0   \n",
       "children                        32412.0      0.083765      0.343470     0.0   \n",
       "babies                          32412.0      0.005523      0.075757     0.0   \n",
       "is_repeated_guest               32412.0      0.031377      0.174338     0.0   \n",
       "previous_cancellations          32412.0      0.011601      0.180473     0.0   \n",
       "previous_bookings_not_canceled  32412.0      0.171418      1.875170     0.0   \n",
       "booking_changes                 32412.0      0.216741      0.640551     0.0   \n",
       "days_in_waiting_list            32412.0      0.262341      4.733027     0.0   \n",
       "required_car_parking_spaces     32412.0      0.046248      0.219367     0.0   \n",
       "total_of_special_requests       32412.0      0.657781      0.834341     0.0   \n",
       "total_nights                    32412.0      3.207979      1.738683     1.0   \n",
       "\n",
       "                                    50%      max  \n",
       "id                              53394.5  97903.0  \n",
       "is_canceled                         0.0      1.0  \n",
       "lead_time                          76.0    373.0  \n",
       "arrival_date_year                2017.0   2017.0  \n",
       "arrival_date_week_number           18.0     35.0  \n",
       "arrival_date_day_of_month          15.5     31.0  \n",
       "stays_in_weekend_nights             1.0      4.0  \n",
       "stays_in_week_nights                2.0      6.0  \n",
       "adults                              2.0      4.0  \n",
       "children                            0.0      3.0  \n",
       "babies                              0.0      2.0  \n",
       "is_repeated_guest                   0.0      1.0  \n",
       "previous_cancellations              0.0      6.0  \n",
       "previous_bookings_not_canceled      0.0     72.0  \n",
       "booking_changes                     0.0     18.0  \n",
       "days_in_waiting_list                0.0    223.0  \n",
       "required_car_parking_spaces         0.0      8.0  \n",
       "total_of_special_requests           0.0      5.0  \n",
       "total_nights                        3.0     10.0  "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Количество дублированных строк: 0\n"
     ]
    }
   ],
   "source": [
    "describe_dataframe(hotel_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Данные не имеют пропусков или дублированных строк.\n",
    "Колонки: [arrival_date_month, meal, country, distribution_channel, reserved_room_type, customer_type] имеют категориальные значения. Исследуем их для выявления ошибок или аномалий их заполнения. Другие колонки имеют количественные значения, в них нет выбивающихся значений. Даты в реальных диапазонах."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Шаг 2. Предобработка и исследовательский анализ данных"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Пропишем функцию для исследования наборов данных."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "def display_objects(dataframe):\n",
    "    object_columns = filter(lambda column: is_string_dtype(dataframe[column]), dataframe.columns)\n",
    "    for i, column in enumerate(object_columns, 1):\n",
    "        display(f\"{i} Колонка: {column}\")\n",
    "        display(dataframe[column].value_counts())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "def display_digits(dataframe):\n",
    "    object_columns = filter(lambda column: not is_string_dtype(dataframe[column]), dataframe.columns)\n",
    "    for i, column in enumerate(object_columns, 1):\n",
    "        display(f\"{i} Колонка: {column}\")\n",
    "        display(dataframe[column].value_counts())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Исследование тестового датафрейма"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'1 Колонка: arrival_date_month'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "May         5262\n",
       "April       4878\n",
       "June        4580\n",
       "March       4277\n",
       "July        3626\n",
       "February    3543\n",
       "January     3150\n",
       "August      3096\n",
       "Name: arrival_date_month, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'2 Колонка: meal'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "BB           24684\n",
       "SC            5035\n",
       "HB            2399\n",
       "SC             258\n",
       "FB              36\n",
       "Name: meal, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'3 Колонка: country'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "PRT    9887\n",
       "GBR    3927\n",
       "FRA    3477\n",
       "DEU    2378\n",
       "ESP    1932\n",
       "       ... \n",
       "FRO       1\n",
       "SDN       1\n",
       "TJK       1\n",
       "ASM       1\n",
       "LIE       1\n",
       "Name: country, Length: 143, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'4 Колонка: distribution_channel'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "TA/TO        27083\n",
       "Direct        3642\n",
       "Corporate     1602\n",
       "GDS             85\n",
       "Name: distribution_channel, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'5 Колонка: reserved_room_type'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "A                   23471\n",
       "D                    6123\n",
       "E                    1644\n",
       "F                     503\n",
       "G                     278\n",
       "C                     201\n",
       "B                     192\n",
       "Name: reserved_room_type, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'6 Колонка: customer_type'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "Transient          27461\n",
       "Transient-Party     4427\n",
       "Contract             359\n",
       "Group                165\n",
       "Name: customer_type, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "display_objects(hotel_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1) Всего в тестовом датафрейме представлены первые 8 месяцев 2017 года."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "2) По условию meal — опции заказа:\n",
    "    SC — нет дополнительных опций;\n",
    "    BB — включён завтрак;\n",
    "    HB — включён завтрак и обед;\n",
    "    FB — включён завтрак, обед и ужин.\n",
    "\n",
    "В одну из опций попал пробел или символ табуляции. Исправим ошибку."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "BB    24684\n",
       "SC     5293\n",
       "HB     2399\n",
       "FB       36\n",
       "Name: meal, dtype: int64"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# hotel_test['meal'][hotel_test['meal'].str.contains(\"SC\")] = \"SC\"\n",
    "hotel_test['meal'] = hotel_test['meal'].str.strip()\n",
    "hotel_test['meal'].value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "В некоторых количественных переменных наблюдаются аномально большие значения, построим для них графики."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[<AxesSubplot:title={'center':'adults'}>,\n",
       "        <AxesSubplot:title={'center':'children'}>,\n",
       "        <AxesSubplot:title={'center':'babies'}>],\n",
       "       [<AxesSubplot:title={'center':'required_car_parking_spaces'}>,\n",
       "        <AxesSubplot:title={'center':'days_in_waiting_list'}>,\n",
       "        <AxesSubplot:title={'center':'total_of_special_requests'}>],\n",
       "       [<AxesSubplot:title={'center':'previous_bookings_not_canceled'}>,\n",
       "        <AxesSubplot:title={'center':'total_nights'}>,\n",
       "        <AxesSubplot:title={'center':'booking_changes'}>]], dtype=object)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x720 with 9 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "hotel_test[\n",
    "    ['adults', 'children', 'babies', 'required_car_parking_spaces', 'days_in_waiting_list', \n",
    "     'total_of_special_requests', 'previous_bookings_not_canceled', 'total_nights', 'booking_changes']\n",
    "].hist(figsize=(15, 10))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Остальные колонки не имеют каких-то выраженых аномалий или отклонений"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-warning\">\n",
    "    <h2> Комментарий ревьюера <a class=\"tocSkip\"> </h2>\n",
    "    \n",
    "<b>Некоторые замечания и рекомендации💡:</b> \n",
    "        \n",
    "У строк есть удобный метод strip, который позволяет убирать лишние пробелы\n",
    "        \n",
    "<div class=\"alert alert-info\", padding: 15px>\n",
    "<strong>Комментарий студента:</strong>\n",
    "    Исправил, сразу не догадался...\n",
    "</div>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-success\">\n",
    "<h2> Комментарий ревьюера №2<a class=\"tocSkip\"> </h2>\n",
    "\n",
    "    \n",
    "<b>Все отлично!👍</b> "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Исследование тренировочного датафрейма"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>is_canceled</th>\n",
       "      <th>lead_time</th>\n",
       "      <th>arrival_date_year</th>\n",
       "      <th>arrival_date_month</th>\n",
       "      <th>arrival_date_week_number</th>\n",
       "      <th>arrival_date_day_of_month</th>\n",
       "      <th>stays_in_weekend_nights</th>\n",
       "      <th>stays_in_week_nights</th>\n",
       "      <th>adults</th>\n",
       "      <th>...</th>\n",
       "      <th>is_repeated_guest</th>\n",
       "      <th>previous_cancellations</th>\n",
       "      <th>previous_bookings_not_canceled</th>\n",
       "      <th>reserved_room_type</th>\n",
       "      <th>booking_changes</th>\n",
       "      <th>days_in_waiting_list</th>\n",
       "      <th>customer_type</th>\n",
       "      <th>required_car_parking_spaces</th>\n",
       "      <th>total_of_special_requests</th>\n",
       "      <th>total_nights</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>2015</td>\n",
       "      <td>July</td>\n",
       "      <td>27</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>A</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Transient</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>2015</td>\n",
       "      <td>July</td>\n",
       "      <td>27</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>2.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>A</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Transient</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2015</td>\n",
       "      <td>July</td>\n",
       "      <td>27</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>2.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>C</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Transient</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>2015</td>\n",
       "      <td>July</td>\n",
       "      <td>27</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>2.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>C</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Transient</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>85.0</td>\n",
       "      <td>2015</td>\n",
       "      <td>July</td>\n",
       "      <td>27</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>2.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>A</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Transient</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>75.0</td>\n",
       "      <td>2015</td>\n",
       "      <td>July</td>\n",
       "      <td>27</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>2.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>D</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Transient</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>23.0</td>\n",
       "      <td>2015</td>\n",
       "      <td>July</td>\n",
       "      <td>27</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>2.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>E</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Transient</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>7</td>\n",
       "      <td>0</td>\n",
       "      <td>18.0</td>\n",
       "      <td>2015</td>\n",
       "      <td>July</td>\n",
       "      <td>27</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>2.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>G</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>Transient</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "      <td>68.0</td>\n",
       "      <td>2015</td>\n",
       "      <td>July</td>\n",
       "      <td>27</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>2.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>D</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Transient</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>37.0</td>\n",
       "      <td>2015</td>\n",
       "      <td>July</td>\n",
       "      <td>27</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>2.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>E</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Contract</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>10 rows × 25 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   id  is_canceled  lead_time  arrival_date_year arrival_date_month  \\\n",
       "0   0            0        7.0               2015               July   \n",
       "1   1            0       14.0               2015               July   \n",
       "2   2            0        0.0               2015               July   \n",
       "3   3            0        9.0               2015               July   \n",
       "4   4            1       85.0               2015               July   \n",
       "5   5            1       75.0               2015               July   \n",
       "6   6            1       23.0               2015               July   \n",
       "7   7            0       18.0               2015               July   \n",
       "8   8            0       68.0               2015               July   \n",
       "9   9            0       37.0               2015               July   \n",
       "\n",
       "   arrival_date_week_number  arrival_date_day_of_month  \\\n",
       "0                        27                          1   \n",
       "1                        27                          1   \n",
       "2                        27                          1   \n",
       "3                        27                          1   \n",
       "4                        27                          1   \n",
       "5                        27                          1   \n",
       "6                        27                          1   \n",
       "7                        27                          1   \n",
       "8                        27                          1   \n",
       "9                        27                          1   \n",
       "\n",
       "   stays_in_weekend_nights  stays_in_week_nights  adults  ...  \\\n",
       "0                        0                     1     1.0  ...   \n",
       "1                        0                     2     2.0  ...   \n",
       "2                        0                     2     2.0  ...   \n",
       "3                        0                     2     2.0  ...   \n",
       "4                        0                     3     2.0  ...   \n",
       "5                        0                     3     2.0  ...   \n",
       "6                        0                     4     2.0  ...   \n",
       "7                        0                     4     2.0  ...   \n",
       "8                        0                     4     2.0  ...   \n",
       "9                        0                     4     2.0  ...   \n",
       "\n",
       "   is_repeated_guest  previous_cancellations previous_bookings_not_canceled  \\\n",
       "0                  0                       0                              0   \n",
       "1                  0                       0                              0   \n",
       "2                  0                       0                              0   \n",
       "3                  0                       0                              0   \n",
       "4                  0                       0                              0   \n",
       "5                  0                       0                              0   \n",
       "6                  0                       0                              0   \n",
       "7                  0                       0                              0   \n",
       "8                  0                       0                              0   \n",
       "9                  0                       0                              0   \n",
       "\n",
       "  reserved_room_type booking_changes  days_in_waiting_list  customer_type  \\\n",
       "0   A                              0                     0      Transient   \n",
       "1   A                              0                     0      Transient   \n",
       "2   C                              0                     0      Transient   \n",
       "3   C                              0                     0      Transient   \n",
       "4   A                              0                     0      Transient   \n",
       "5   D                              0                     0      Transient   \n",
       "6   E                              0                     0      Transient   \n",
       "7   G                              1                     0      Transient   \n",
       "8   D                              0                     0      Transient   \n",
       "9   E                              0                     0       Contract   \n",
       "\n",
       "   required_car_parking_spaces total_of_special_requests  total_nights  \n",
       "0                            0                         0             1  \n",
       "1                            0                         1             2  \n",
       "2                            0                         0             2  \n",
       "3                            0                         1             2  \n",
       "4                            0                         1             3  \n",
       "5                            0                         0             3  \n",
       "6                            0                         0             4  \n",
       "7                            0                         1             4  \n",
       "8                            0                         3             4  \n",
       "9                            0                         0             4  \n",
       "\n",
       "[10 rows x 25 columns]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 65229 entries, 0 to 65228\n",
      "Data columns (total 25 columns):\n",
      " #   Column                          Non-Null Count  Dtype  \n",
      "---  ------                          --------------  -----  \n",
      " 0   id                              65229 non-null  int64  \n",
      " 1   is_canceled                     65229 non-null  int64  \n",
      " 2   lead_time                       65229 non-null  float64\n",
      " 3   arrival_date_year               65229 non-null  int64  \n",
      " 4   arrival_date_month              65229 non-null  object \n",
      " 5   arrival_date_week_number        65229 non-null  int64  \n",
      " 6   arrival_date_day_of_month       65229 non-null  int64  \n",
      " 7   stays_in_weekend_nights         65229 non-null  int64  \n",
      " 8   stays_in_week_nights            65229 non-null  int64  \n",
      " 9   adults                          65229 non-null  float64\n",
      " 10  children                        65229 non-null  float64\n",
      " 11  babies                          65229 non-null  float64\n",
      " 12  meal                            65229 non-null  object \n",
      " 13  country                         65229 non-null  object \n",
      " 14  distribution_channel            65229 non-null  object \n",
      " 15  is_repeated_guest               65229 non-null  int64  \n",
      " 16  previous_cancellations          65229 non-null  int64  \n",
      " 17  previous_bookings_not_canceled  65229 non-null  int64  \n",
      " 18  reserved_room_type              65229 non-null  object \n",
      " 19  booking_changes                 65229 non-null  int64  \n",
      " 20  days_in_waiting_list            65229 non-null  int64  \n",
      " 21  customer_type                   65229 non-null  object \n",
      " 22  required_car_parking_spaces     65229 non-null  int64  \n",
      " 23  total_of_special_requests       65229 non-null  int64  \n",
      " 24  total_nights                    65229 non-null  int64  \n",
      "dtypes: float64(4), int64(15), object(6)\n",
      "memory usage: 12.4+ MB\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "None"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>min</th>\n",
       "      <th>50%</th>\n",
       "      <th>max</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>id</th>\n",
       "      <td>65229.0</td>\n",
       "      <td>43544.069172</td>\n",
       "      <td>25614.858971</td>\n",
       "      <td>0.0</td>\n",
       "      <td>40554.0</td>\n",
       "      <td>84121.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>is_canceled</th>\n",
       "      <td>65229.0</td>\n",
       "      <td>0.368609</td>\n",
       "      <td>0.482431</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>lead_time</th>\n",
       "      <td>65229.0</td>\n",
       "      <td>96.337917</td>\n",
       "      <td>96.127545</td>\n",
       "      <td>0.0</td>\n",
       "      <td>64.0</td>\n",
       "      <td>374.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>arrival_date_year</th>\n",
       "      <td>65229.0</td>\n",
       "      <td>2015.719021</td>\n",
       "      <td>0.449481</td>\n",
       "      <td>2015.0</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>2016.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>arrival_date_week_number</th>\n",
       "      <td>65229.0</td>\n",
       "      <td>31.339772</td>\n",
       "      <td>13.464024</td>\n",
       "      <td>1.0</td>\n",
       "      <td>34.0</td>\n",
       "      <td>53.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>arrival_date_day_of_month</th>\n",
       "      <td>65229.0</td>\n",
       "      <td>15.847813</td>\n",
       "      <td>8.748182</td>\n",
       "      <td>1.0</td>\n",
       "      <td>16.0</td>\n",
       "      <td>31.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>stays_in_weekend_nights</th>\n",
       "      <td>65229.0</td>\n",
       "      <td>0.825185</td>\n",
       "      <td>0.853477</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>stays_in_week_nights</th>\n",
       "      <td>65229.0</td>\n",
       "      <td>2.224793</td>\n",
       "      <td>1.354992</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>adults</th>\n",
       "      <td>65229.0</td>\n",
       "      <td>1.836576</td>\n",
       "      <td>0.480245</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>children</th>\n",
       "      <td>65229.0</td>\n",
       "      <td>0.074890</td>\n",
       "      <td>0.334243</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>babies</th>\n",
       "      <td>65229.0</td>\n",
       "      <td>0.007236</td>\n",
       "      <td>0.098790</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>is_repeated_guest</th>\n",
       "      <td>65229.0</td>\n",
       "      <td>0.027151</td>\n",
       "      <td>0.162523</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>previous_cancellations</th>\n",
       "      <td>65229.0</td>\n",
       "      <td>0.128915</td>\n",
       "      <td>0.965326</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>26.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>previous_bookings_not_canceled</th>\n",
       "      <td>65229.0</td>\n",
       "      <td>0.107713</td>\n",
       "      <td>1.326638</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>58.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>booking_changes</th>\n",
       "      <td>65229.0</td>\n",
       "      <td>0.194269</td>\n",
       "      <td>0.593838</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>17.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>days_in_waiting_list</th>\n",
       "      <td>65229.0</td>\n",
       "      <td>3.334422</td>\n",
       "      <td>18.239606</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>259.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>required_car_parking_spaces</th>\n",
       "      <td>65229.0</td>\n",
       "      <td>0.056647</td>\n",
       "      <td>0.232094</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>total_of_special_requests</th>\n",
       "      <td>65229.0</td>\n",
       "      <td>0.512763</td>\n",
       "      <td>0.752590</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>total_nights</th>\n",
       "      <td>65229.0</td>\n",
       "      <td>3.049978</td>\n",
       "      <td>1.738108</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                  count          mean           std     min  \\\n",
       "id                              65229.0  43544.069172  25614.858971     0.0   \n",
       "is_canceled                     65229.0      0.368609      0.482431     0.0   \n",
       "lead_time                       65229.0     96.337917     96.127545     0.0   \n",
       "arrival_date_year               65229.0   2015.719021      0.449481  2015.0   \n",
       "arrival_date_week_number        65229.0     31.339772     13.464024     1.0   \n",
       "arrival_date_day_of_month       65229.0     15.847813      8.748182     1.0   \n",
       "stays_in_weekend_nights         65229.0      0.825185      0.853477     0.0   \n",
       "stays_in_week_nights            65229.0      2.224793      1.354992     0.0   \n",
       "adults                          65229.0      1.836576      0.480245     0.0   \n",
       "children                        65229.0      0.074890      0.334243     0.0   \n",
       "babies                          65229.0      0.007236      0.098790     0.0   \n",
       "is_repeated_guest               65229.0      0.027151      0.162523     0.0   \n",
       "previous_cancellations          65229.0      0.128915      0.965326     0.0   \n",
       "previous_bookings_not_canceled  65229.0      0.107713      1.326638     0.0   \n",
       "booking_changes                 65229.0      0.194269      0.593838     0.0   \n",
       "days_in_waiting_list            65229.0      3.334422     18.239606     0.0   \n",
       "required_car_parking_spaces     65229.0      0.056647      0.232094     0.0   \n",
       "total_of_special_requests       65229.0      0.512763      0.752590     0.0   \n",
       "total_nights                    65229.0      3.049978      1.738108     1.0   \n",
       "\n",
       "                                    50%      max  \n",
       "id                              40554.0  84121.0  \n",
       "is_canceled                         0.0      1.0  \n",
       "lead_time                          64.0    374.0  \n",
       "arrival_date_year                2016.0   2016.0  \n",
       "arrival_date_week_number           34.0     53.0  \n",
       "arrival_date_day_of_month          16.0     31.0  \n",
       "stays_in_weekend_nights             1.0      4.0  \n",
       "stays_in_week_nights                2.0      6.0  \n",
       "adults                              2.0      4.0  \n",
       "children                            0.0      3.0  \n",
       "babies                              0.0     10.0  \n",
       "is_repeated_guest                   0.0      1.0  \n",
       "previous_cancellations              0.0     26.0  \n",
       "previous_bookings_not_canceled      0.0     58.0  \n",
       "booking_changes                     0.0     17.0  \n",
       "days_in_waiting_list                0.0    259.0  \n",
       "required_car_parking_spaces         0.0      3.0  \n",
       "total_of_special_requests           0.0      5.0  \n",
       "total_nights                        3.0     10.0  "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Количество дублированных строк: 0\n"
     ]
    }
   ],
   "source": [
    "describe_dataframe(hotel_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Структура тренировочного датафрейма соответствует тестовому"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'1 Колонка: arrival_date_month'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "October      9255\n",
       "September    8782\n",
       "August       6678\n",
       "November     5761\n",
       "July         5718\n",
       "December     5497\n",
       "April        4804\n",
       "May          4677\n",
       "June         4659\n",
       "March        4148\n",
       "February     3358\n",
       "January      1892\n",
       "Name: arrival_date_month, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'2 Колонка: meal'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "BB           51697\n",
       "HB            7292\n",
       "SC            5274\n",
       "SC             515\n",
       "FB             451\n",
       "Name: meal, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'3 Колонка: country'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "PRT    28831\n",
       "FRA     5974\n",
       "GBR     5109\n",
       "ESP     4900\n",
       "DEU     3887\n",
       "       ...  \n",
       "LCA        1\n",
       "MMR        1\n",
       "SMR        1\n",
       "BDI        1\n",
       "BHR        1\n",
       "Name: country, Length: 155, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'4 Колонка: distribution_channel'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "TA/TO        54454\n",
       "Direct        6853\n",
       "Corporate     3823\n",
       "GDS             99\n",
       "Name: distribution_channel, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'5 Колонка: reserved_room_type'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "A                   50501\n",
       "D                    9387\n",
       "E                    2448\n",
       "F                    1213\n",
       "B                     860\n",
       "G                     592\n",
       "C                     228\n",
       "Name: reserved_room_type, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'6 Колонка: customer_type'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "Transient          45493\n",
       "Transient-Party    16703\n",
       "Contract            2746\n",
       "Group                287\n",
       "Name: customer_type, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "display_objects(hotel_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Также устраним ошибку с типами питания."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "BB    51697\n",
       "HB     7292\n",
       "SC     5789\n",
       "FB      451\n",
       "Name: meal, dtype: int64"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# hotel_train['meal'][hotel_train['meal'].str.contains(\"SC\")] = \"SC\"\n",
    "hotel_train['meal'] = hotel_train['meal'].str.strip()\n",
    "hotel_train['meal'].value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "В некоторых количественных переменных наблюдаются аномально большие значения, построим для них графики."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[<AxesSubplot:title={'center':'adults'}>,\n",
       "        <AxesSubplot:title={'center':'children'}>,\n",
       "        <AxesSubplot:title={'center':'babies'}>],\n",
       "       [<AxesSubplot:title={'center':'required_car_parking_spaces'}>,\n",
       "        <AxesSubplot:title={'center':'days_in_waiting_list'}>,\n",
       "        <AxesSubplot:title={'center':'total_of_special_requests'}>],\n",
       "       [<AxesSubplot:title={'center':'previous_bookings_not_canceled'}>,\n",
       "        <AxesSubplot:title={'center':'total_nights'}>,\n",
       "        <AxesSubplot:title={'center':'booking_changes'}>]], dtype=object)"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x720 with 9 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "hotel_train[\n",
    "    ['adults', 'children', 'babies', 'required_car_parking_spaces', 'days_in_waiting_list', \n",
    "     'total_of_special_requests', 'previous_bookings_not_canceled', 'total_nights', 'booking_changes']\n",
    "].hist(figsize=(15, 10))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-success\">\n",
    "<h2> Комментарий ревьюера <a class=\"tocSkip\"> </h2>\n",
    "\n",
    "<b>Все отлично!👍:</b> \n",
    "    \n",
    "Молодец, что исследуешь оба датафрейма."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-block alert-danger\">\n",
    "<h2> Комментарий ревьюера <a class=\"tocSkip\"></h2>\n",
    "\n",
    "    \n",
    "<b>На доработку🤔:</b>\n",
    "    \n",
    "Стоит построить несколько графиков для переменных.\n",
    "    \n",
    "Также стоит проверить данные на аномальные значения.\n",
    "    \n",
    "<div class=\"alert alert-info\", padding: 15px>\n",
    "<strong>Комментарий студента:</strong>\n",
    "    Графики по каждому датасету добавил, в выводе к параграфу отражены наблюдения и методики борьбы с аномальными значениями.\n",
    "</div>\n",
    "    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-warning\">\n",
    "    <h2> Комментарий ревьюера №2<a class=\"tocSkip\"> </h2>\n",
    "    \n",
    "<b>Некоторые замечания и рекомендации💡:</b> \n",
    "        \n",
    "        \n",
    "Для визуализации распределений данных по категориям больше подходят графики столбчатых диаграмм\n",
    "        \n",
    "https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.bar.html"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-warning\">\n",
    "    <h2> Комментарий ревьюера <a class=\"tocSkip\"> </h2>\n",
    "    \n",
    "<b>Некоторые замечания и рекомендации💡:</b> \n",
    "        \n",
    "Можно провести EDA c точки зрения вероятности отмены брони."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Масштабирование и кодирование данных"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Для разработки ML-модели потребуется преобразовать категориальные значения к количественным, после чего провести нормализацию данных.\n",
    "Для кодирования категорий используем технику OrdinalEncoding. Для нормализации данных используем StandardScaler."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Также упразним колонку id, т.к. это идентификатор - сделаем его идентификатором датафрейма. Данная колонка только помешает обучению моделей, т.к. не несет никакой информации."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "target_train = hotel_train['is_canceled']\n",
    "features_train = hotel_train.drop(['is_canceled'], axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "target_test = hotel_test['is_canceled']\n",
    "features_test = hotel_test.drop(['is_canceled'], axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "categorical_columns = list(filter(lambda column: is_string_dtype(features_train[column]), features_train.columns))\n",
    "numeric_columns = list(filter(lambda column: not is_string_dtype(features_train[column]), features_train.columns))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {color: black;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>OneHotEncoder(drop=&#x27;first&#x27;, handle_unknown=&#x27;infrequent_if_exist&#x27;)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">OneHotEncoder</label><div class=\"sk-toggleable__content\"><pre>OneHotEncoder(drop=&#x27;first&#x27;, handle_unknown=&#x27;infrequent_if_exist&#x27;)</pre></div></div></div></div></div>"
      ],
      "text/plain": [
       "OneHotEncoder(drop='first', handle_unknown='infrequent_if_exist')"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ohe_encoder = OneHotEncoder(drop='first', handle_unknown='infrequent_if_exist')\n",
    "ohe_encoder.fit(features_train[categorical_columns])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "features_train_encoded = pd.DataFrame(\n",
    "    ohe_encoder.transform(features_train[categorical_columns]).toarray(),\n",
    "    columns=ohe_encoder.get_feature_names_out(categorical_columns),\n",
    ")\n",
    "features_train = pd.concat((features_train[numeric_columns], features_train_encoded), axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/opt/conda/lib/python3.9/site-packages/sklearn/preprocessing/_encoders.py:227: UserWarning: Found unknown categories in columns [2] during transform. These unknown categories will be encoded as all zeros\n",
      "  warnings.warn(\n"
     ]
    }
   ],
   "source": [
    "features_test_encoded = pd.DataFrame(\n",
    "    ohe_encoder.transform(features_test[categorical_columns]).toarray(),\n",
    "    columns=ohe_encoder.get_feature_names_out(categorical_columns)\n",
    ")\n",
    "features_test = pd.concat(\n",
    "    (features_test[numeric_columns], features_test_encoded),\n",
    "    axis=1\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>lead_time</th>\n",
       "      <th>arrival_date_year</th>\n",
       "      <th>arrival_date_week_number</th>\n",
       "      <th>arrival_date_day_of_month</th>\n",
       "      <th>stays_in_weekend_nights</th>\n",
       "      <th>stays_in_week_nights</th>\n",
       "      <th>adults</th>\n",
       "      <th>children</th>\n",
       "      <th>babies</th>\n",
       "      <th>...</th>\n",
       "      <th>distribution_channel_TA/TO</th>\n",
       "      <th>reserved_room_type_B</th>\n",
       "      <th>reserved_room_type_C</th>\n",
       "      <th>reserved_room_type_D</th>\n",
       "      <th>reserved_room_type_E</th>\n",
       "      <th>reserved_room_type_F</th>\n",
       "      <th>reserved_room_type_G</th>\n",
       "      <th>customer_type_Group</th>\n",
       "      <th>customer_type_Transient</th>\n",
       "      <th>customer_type_Transient-Party</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>2015</td>\n",
       "      <td>27</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>14.0</td>\n",
       "      <td>2015</td>\n",
       "      <td>27</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2015</td>\n",
       "      <td>27</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>9.0</td>\n",
       "      <td>2015</td>\n",
       "      <td>27</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>85.0</td>\n",
       "      <td>2015</td>\n",
       "      <td>27</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 198 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   id  lead_time  arrival_date_year  arrival_date_week_number  \\\n",
       "0   0        7.0               2015                        27   \n",
       "1   1       14.0               2015                        27   \n",
       "2   2        0.0               2015                        27   \n",
       "3   3        9.0               2015                        27   \n",
       "4   4       85.0               2015                        27   \n",
       "\n",
       "   arrival_date_day_of_month  stays_in_weekend_nights  stays_in_week_nights  \\\n",
       "0                          1                        0                     1   \n",
       "1                          1                        0                     2   \n",
       "2                          1                        0                     2   \n",
       "3                          1                        0                     2   \n",
       "4                          1                        0                     3   \n",
       "\n",
       "   adults  children  babies  ...  distribution_channel_TA/TO  \\\n",
       "0     1.0       0.0     0.0  ...                         0.0   \n",
       "1     2.0       0.0     0.0  ...                         1.0   \n",
       "2     2.0       0.0     0.0  ...                         0.0   \n",
       "3     2.0       0.0     0.0  ...                         0.0   \n",
       "4     2.0       0.0     0.0  ...                         1.0   \n",
       "\n",
       "   reserved_room_type_B                 reserved_room_type_C                 \\\n",
       "0                                  0.0                                  0.0   \n",
       "1                                  0.0                                  0.0   \n",
       "2                                  0.0                                  1.0   \n",
       "3                                  0.0                                  1.0   \n",
       "4                                  0.0                                  0.0   \n",
       "\n",
       "   reserved_room_type_D                 reserved_room_type_E                 \\\n",
       "0                                  0.0                                  0.0   \n",
       "1                                  0.0                                  0.0   \n",
       "2                                  0.0                                  0.0   \n",
       "3                                  0.0                                  0.0   \n",
       "4                                  0.0                                  0.0   \n",
       "\n",
       "   reserved_room_type_F                 reserved_room_type_G                 \\\n",
       "0                                  0.0                                  0.0   \n",
       "1                                  0.0                                  0.0   \n",
       "2                                  0.0                                  0.0   \n",
       "3                                  0.0                                  0.0   \n",
       "4                                  0.0                                  0.0   \n",
       "\n",
       "   customer_type_Group  customer_type_Transient  customer_type_Transient-Party  \n",
       "0                  0.0                      1.0                            0.0  \n",
       "1                  0.0                      1.0                            0.0  \n",
       "2                  0.0                      1.0                            0.0  \n",
       "3                  0.0                      1.0                            0.0  \n",
       "4                  0.0                      1.0                            0.0  \n",
       "\n",
       "[5 rows x 198 columns]"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "features_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "target_test.index = features_test['id']\n",
    "features_test.index = features_test['id']\n",
    "features_test.drop(['id'], axis=1, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "target_train.index = features_train['id']\n",
    "features_train.index = features_train['id']\n",
    "features_train.drop(['id'], axis=1, inplace=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-block alert-danger\">\n",
    "<h2> Комментарий ревьюера <a class=\"tocSkip\"></h2>\n",
    "\n",
    "    \n",
    "<b>На доработку🤔:</b>\n",
    "    \n",
    "    \n",
    "Ты молодец, алгоритм правильный. \n",
    "    \n",
    "Только обрати, пожалуйста, внимание, что в кодер также попадают и кодируются чилсенные признаки. Из-за этого теряются исходные свойства их распределения. Стоит это поправить и проследить, чтобы в кодер попадали только категориальные признаки.\n",
    "    \n",
    "<div class=\"alert alert-info\", padding: 15px>\n",
    "<strong>Комментарий студента:</strong>\n",
    "  Было трудно, но поправил.\n",
    "</div>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-success\">\n",
    "<h2> Комментарий ревьюера №2<a class=\"tocSkip\"> </h2>\n",
    "\n",
    "<b>Все отлично!👍:</b> \n",
    "    \n",
    "Ты молодец!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>lead_time</th>\n",
       "      <th>arrival_date_year</th>\n",
       "      <th>arrival_date_week_number</th>\n",
       "      <th>arrival_date_day_of_month</th>\n",
       "      <th>stays_in_weekend_nights</th>\n",
       "      <th>stays_in_week_nights</th>\n",
       "      <th>adults</th>\n",
       "      <th>children</th>\n",
       "      <th>babies</th>\n",
       "      <th>is_repeated_guest</th>\n",
       "      <th>...</th>\n",
       "      <th>distribution_channel_TA/TO</th>\n",
       "      <th>reserved_room_type_B</th>\n",
       "      <th>reserved_room_type_C</th>\n",
       "      <th>reserved_room_type_D</th>\n",
       "      <th>reserved_room_type_E</th>\n",
       "      <th>reserved_room_type_F</th>\n",
       "      <th>reserved_room_type_G</th>\n",
       "      <th>customer_type_Group</th>\n",
       "      <th>customer_type_Transient</th>\n",
       "      <th>customer_type_Transient-Party</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>id</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.929376</td>\n",
       "      <td>-1.599681</td>\n",
       "      <td>-0.322326</td>\n",
       "      <td>-1.697258</td>\n",
       "      <td>-0.966858</td>\n",
       "      <td>-0.903918</td>\n",
       "      <td>-1.741989</td>\n",
       "      <td>-0.224060</td>\n",
       "      <td>-0.073248</td>\n",
       "      <td>-0.167058</td>\n",
       "      <td>...</td>\n",
       "      <td>-2.248051</td>\n",
       "      <td>-0.115587</td>\n",
       "      <td>-0.059225</td>\n",
       "      <td>-0.409999</td>\n",
       "      <td>-0.197466</td>\n",
       "      <td>-0.137653</td>\n",
       "      <td>-0.095702</td>\n",
       "      <td>-0.066478</td>\n",
       "      <td>0.658654</td>\n",
       "      <td>-0.586692</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.856555</td>\n",
       "      <td>-1.599681</td>\n",
       "      <td>-0.322326</td>\n",
       "      <td>-1.697258</td>\n",
       "      <td>-0.966858</td>\n",
       "      <td>-0.165901</td>\n",
       "      <td>0.340296</td>\n",
       "      <td>-0.224060</td>\n",
       "      <td>-0.073248</td>\n",
       "      <td>-0.167058</td>\n",
       "      <td>...</td>\n",
       "      <td>0.444830</td>\n",
       "      <td>-0.115587</td>\n",
       "      <td>-0.059225</td>\n",
       "      <td>-0.409999</td>\n",
       "      <td>-0.197466</td>\n",
       "      <td>-0.137653</td>\n",
       "      <td>-0.095702</td>\n",
       "      <td>-0.066478</td>\n",
       "      <td>0.658654</td>\n",
       "      <td>-0.586692</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-1.002196</td>\n",
       "      <td>-1.599681</td>\n",
       "      <td>-0.322326</td>\n",
       "      <td>-1.697258</td>\n",
       "      <td>-0.966858</td>\n",
       "      <td>-0.165901</td>\n",
       "      <td>0.340296</td>\n",
       "      <td>-0.224060</td>\n",
       "      <td>-0.073248</td>\n",
       "      <td>-0.167058</td>\n",
       "      <td>...</td>\n",
       "      <td>-2.248051</td>\n",
       "      <td>-0.115587</td>\n",
       "      <td>16.884671</td>\n",
       "      <td>-0.409999</td>\n",
       "      <td>-0.197466</td>\n",
       "      <td>-0.137653</td>\n",
       "      <td>-0.095702</td>\n",
       "      <td>-0.066478</td>\n",
       "      <td>0.658654</td>\n",
       "      <td>-0.586692</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.908570</td>\n",
       "      <td>-1.599681</td>\n",
       "      <td>-0.322326</td>\n",
       "      <td>-1.697258</td>\n",
       "      <td>-0.966858</td>\n",
       "      <td>-0.165901</td>\n",
       "      <td>0.340296</td>\n",
       "      <td>-0.224060</td>\n",
       "      <td>-0.073248</td>\n",
       "      <td>-0.167058</td>\n",
       "      <td>...</td>\n",
       "      <td>-2.248051</td>\n",
       "      <td>-0.115587</td>\n",
       "      <td>16.884671</td>\n",
       "      <td>-0.409999</td>\n",
       "      <td>-0.197466</td>\n",
       "      <td>-0.137653</td>\n",
       "      <td>-0.095702</td>\n",
       "      <td>-0.066478</td>\n",
       "      <td>0.658654</td>\n",
       "      <td>-0.586692</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-0.117948</td>\n",
       "      <td>-1.599681</td>\n",
       "      <td>-0.322326</td>\n",
       "      <td>-1.697258</td>\n",
       "      <td>-0.966858</td>\n",
       "      <td>0.572116</td>\n",
       "      <td>0.340296</td>\n",
       "      <td>-0.224060</td>\n",
       "      <td>-0.073248</td>\n",
       "      <td>-0.167058</td>\n",
       "      <td>...</td>\n",
       "      <td>0.444830</td>\n",
       "      <td>-0.115587</td>\n",
       "      <td>-0.059225</td>\n",
       "      <td>-0.409999</td>\n",
       "      <td>-0.197466</td>\n",
       "      <td>-0.137653</td>\n",
       "      <td>-0.095702</td>\n",
       "      <td>-0.066478</td>\n",
       "      <td>0.658654</td>\n",
       "      <td>-0.586692</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>-0.221977</td>\n",
       "      <td>-1.599681</td>\n",
       "      <td>-0.322326</td>\n",
       "      <td>-1.697258</td>\n",
       "      <td>-0.966858</td>\n",
       "      <td>0.572116</td>\n",
       "      <td>0.340296</td>\n",
       "      <td>-0.224060</td>\n",
       "      <td>-0.073248</td>\n",
       "      <td>-0.167058</td>\n",
       "      <td>...</td>\n",
       "      <td>0.444830</td>\n",
       "      <td>-0.115587</td>\n",
       "      <td>-0.059225</td>\n",
       "      <td>2.439030</td>\n",
       "      <td>-0.197466</td>\n",
       "      <td>-0.137653</td>\n",
       "      <td>-0.095702</td>\n",
       "      <td>-0.066478</td>\n",
       "      <td>0.658654</td>\n",
       "      <td>-0.586692</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>-0.762929</td>\n",
       "      <td>-1.599681</td>\n",
       "      <td>-0.322326</td>\n",
       "      <td>-1.697258</td>\n",
       "      <td>-0.966858</td>\n",
       "      <td>1.310134</td>\n",
       "      <td>0.340296</td>\n",
       "      <td>-0.224060</td>\n",
       "      <td>-0.073248</td>\n",
       "      <td>-0.167058</td>\n",
       "      <td>...</td>\n",
       "      <td>0.444830</td>\n",
       "      <td>-0.115587</td>\n",
       "      <td>-0.059225</td>\n",
       "      <td>-0.409999</td>\n",
       "      <td>5.064172</td>\n",
       "      <td>-0.137653</td>\n",
       "      <td>-0.095702</td>\n",
       "      <td>-0.066478</td>\n",
       "      <td>0.658654</td>\n",
       "      <td>-0.586692</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>-0.814943</td>\n",
       "      <td>-1.599681</td>\n",
       "      <td>-0.322326</td>\n",
       "      <td>-1.697258</td>\n",
       "      <td>-0.966858</td>\n",
       "      <td>1.310134</td>\n",
       "      <td>0.340296</td>\n",
       "      <td>2.767799</td>\n",
       "      <td>-0.073248</td>\n",
       "      <td>-0.167058</td>\n",
       "      <td>...</td>\n",
       "      <td>0.444830</td>\n",
       "      <td>-0.115587</td>\n",
       "      <td>-0.059225</td>\n",
       "      <td>-0.409999</td>\n",
       "      <td>-0.197466</td>\n",
       "      <td>-0.137653</td>\n",
       "      <td>10.449121</td>\n",
       "      <td>-0.066478</td>\n",
       "      <td>0.658654</td>\n",
       "      <td>-0.586692</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>-0.294797</td>\n",
       "      <td>-1.599681</td>\n",
       "      <td>-0.322326</td>\n",
       "      <td>-1.697258</td>\n",
       "      <td>-0.966858</td>\n",
       "      <td>1.310134</td>\n",
       "      <td>0.340296</td>\n",
       "      <td>-0.224060</td>\n",
       "      <td>-0.073248</td>\n",
       "      <td>-0.167058</td>\n",
       "      <td>...</td>\n",
       "      <td>0.444830</td>\n",
       "      <td>-0.115587</td>\n",
       "      <td>-0.059225</td>\n",
       "      <td>2.439030</td>\n",
       "      <td>-0.197466</td>\n",
       "      <td>-0.137653</td>\n",
       "      <td>-0.095702</td>\n",
       "      <td>-0.066478</td>\n",
       "      <td>0.658654</td>\n",
       "      <td>-0.586692</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>-0.617288</td>\n",
       "      <td>-1.599681</td>\n",
       "      <td>-0.322326</td>\n",
       "      <td>-1.697258</td>\n",
       "      <td>-0.966858</td>\n",
       "      <td>1.310134</td>\n",
       "      <td>0.340296</td>\n",
       "      <td>-0.224060</td>\n",
       "      <td>-0.073248</td>\n",
       "      <td>-0.167058</td>\n",
       "      <td>...</td>\n",
       "      <td>0.444830</td>\n",
       "      <td>-0.115587</td>\n",
       "      <td>-0.059225</td>\n",
       "      <td>-0.409999</td>\n",
       "      <td>5.064172</td>\n",
       "      <td>-0.137653</td>\n",
       "      <td>-0.095702</td>\n",
       "      <td>-0.066478</td>\n",
       "      <td>-1.518248</td>\n",
       "      <td>-0.586692</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>10 rows × 197 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    lead_time  arrival_date_year  arrival_date_week_number  \\\n",
       "id                                                           \n",
       "0   -0.929376          -1.599681                 -0.322326   \n",
       "1   -0.856555          -1.599681                 -0.322326   \n",
       "2   -1.002196          -1.599681                 -0.322326   \n",
       "3   -0.908570          -1.599681                 -0.322326   \n",
       "4   -0.117948          -1.599681                 -0.322326   \n",
       "5   -0.221977          -1.599681                 -0.322326   \n",
       "6   -0.762929          -1.599681                 -0.322326   \n",
       "7   -0.814943          -1.599681                 -0.322326   \n",
       "8   -0.294797          -1.599681                 -0.322326   \n",
       "9   -0.617288          -1.599681                 -0.322326   \n",
       "\n",
       "    arrival_date_day_of_month  stays_in_weekend_nights  stays_in_week_nights  \\\n",
       "id                                                                             \n",
       "0                   -1.697258                -0.966858             -0.903918   \n",
       "1                   -1.697258                -0.966858             -0.165901   \n",
       "2                   -1.697258                -0.966858             -0.165901   \n",
       "3                   -1.697258                -0.966858             -0.165901   \n",
       "4                   -1.697258                -0.966858              0.572116   \n",
       "5                   -1.697258                -0.966858              0.572116   \n",
       "6                   -1.697258                -0.966858              1.310134   \n",
       "7                   -1.697258                -0.966858              1.310134   \n",
       "8                   -1.697258                -0.966858              1.310134   \n",
       "9                   -1.697258                -0.966858              1.310134   \n",
       "\n",
       "      adults  children    babies  is_repeated_guest  ...  \\\n",
       "id                                                   ...   \n",
       "0  -1.741989 -0.224060 -0.073248          -0.167058  ...   \n",
       "1   0.340296 -0.224060 -0.073248          -0.167058  ...   \n",
       "2   0.340296 -0.224060 -0.073248          -0.167058  ...   \n",
       "3   0.340296 -0.224060 -0.073248          -0.167058  ...   \n",
       "4   0.340296 -0.224060 -0.073248          -0.167058  ...   \n",
       "5   0.340296 -0.224060 -0.073248          -0.167058  ...   \n",
       "6   0.340296 -0.224060 -0.073248          -0.167058  ...   \n",
       "7   0.340296  2.767799 -0.073248          -0.167058  ...   \n",
       "8   0.340296 -0.224060 -0.073248          -0.167058  ...   \n",
       "9   0.340296 -0.224060 -0.073248          -0.167058  ...   \n",
       "\n",
       "    distribution_channel_TA/TO  reserved_room_type_B                 \\\n",
       "id                                                                    \n",
       "0                    -2.248051                            -0.115587   \n",
       "1                     0.444830                            -0.115587   \n",
       "2                    -2.248051                            -0.115587   \n",
       "3                    -2.248051                            -0.115587   \n",
       "4                     0.444830                            -0.115587   \n",
       "5                     0.444830                            -0.115587   \n",
       "6                     0.444830                            -0.115587   \n",
       "7                     0.444830                            -0.115587   \n",
       "8                     0.444830                            -0.115587   \n",
       "9                     0.444830                            -0.115587   \n",
       "\n",
       "    reserved_room_type_C                 reserved_room_type_D                 \\\n",
       "id                                                                             \n",
       "0                             -0.059225                            -0.409999   \n",
       "1                             -0.059225                            -0.409999   \n",
       "2                             16.884671                            -0.409999   \n",
       "3                             16.884671                            -0.409999   \n",
       "4                             -0.059225                            -0.409999   \n",
       "5                             -0.059225                             2.439030   \n",
       "6                             -0.059225                            -0.409999   \n",
       "7                             -0.059225                            -0.409999   \n",
       "8                             -0.059225                             2.439030   \n",
       "9                             -0.059225                            -0.409999   \n",
       "\n",
       "    reserved_room_type_E                 reserved_room_type_F                 \\\n",
       "id                                                                             \n",
       "0                             -0.197466                            -0.137653   \n",
       "1                             -0.197466                            -0.137653   \n",
       "2                             -0.197466                            -0.137653   \n",
       "3                             -0.197466                            -0.137653   \n",
       "4                             -0.197466                            -0.137653   \n",
       "5                             -0.197466                            -0.137653   \n",
       "6                              5.064172                            -0.137653   \n",
       "7                             -0.197466                            -0.137653   \n",
       "8                             -0.197466                            -0.137653   \n",
       "9                              5.064172                            -0.137653   \n",
       "\n",
       "    reserved_room_type_G                 customer_type_Group  \\\n",
       "id                                                             \n",
       "0                             -0.095702            -0.066478   \n",
       "1                             -0.095702            -0.066478   \n",
       "2                             -0.095702            -0.066478   \n",
       "3                             -0.095702            -0.066478   \n",
       "4                             -0.095702            -0.066478   \n",
       "5                             -0.095702            -0.066478   \n",
       "6                             -0.095702            -0.066478   \n",
       "7                             10.449121            -0.066478   \n",
       "8                             -0.095702            -0.066478   \n",
       "9                             -0.095702            -0.066478   \n",
       "\n",
       "    customer_type_Transient  customer_type_Transient-Party  \n",
       "id                                                          \n",
       "0                  0.658654                      -0.586692  \n",
       "1                  0.658654                      -0.586692  \n",
       "2                  0.658654                      -0.586692  \n",
       "3                  0.658654                      -0.586692  \n",
       "4                  0.658654                      -0.586692  \n",
       "5                  0.658654                      -0.586692  \n",
       "6                  0.658654                      -0.586692  \n",
       "7                  0.658654                      -0.586692  \n",
       "8                  0.658654                      -0.586692  \n",
       "9                 -1.518248                      -0.586692  \n",
       "\n",
       "[10 rows x 197 columns]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 65229 entries, 0 to 84121\n",
      "Columns: 197 entries, lead_time to customer_type_Transient-Party\n",
      "dtypes: float64(197)\n",
      "memory usage: 98.5 MB\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "None"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>min</th>\n",
       "      <th>50%</th>\n",
       "      <th>max</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>lead_time</th>\n",
       "      <td>65229.0</td>\n",
       "      <td>-3.311487e-17</td>\n",
       "      <td>1.000008</td>\n",
       "      <td>-1.002196</td>\n",
       "      <td>-0.336409</td>\n",
       "      <td>2.888498</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>arrival_date_year</th>\n",
       "      <td>65229.0</td>\n",
       "      <td>-1.588817e-13</td>\n",
       "      <td>1.000008</td>\n",
       "      <td>-1.599681</td>\n",
       "      <td>0.625124</td>\n",
       "      <td>0.625124</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>arrival_date_week_number</th>\n",
       "      <td>65229.0</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>1.000008</td>\n",
       "      <td>-2.253413</td>\n",
       "      <td>0.197582</td>\n",
       "      <td>1.608761</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>arrival_date_day_of_month</th>\n",
       "      <td>65229.0</td>\n",
       "      <td>2.091466e-17</td>\n",
       "      <td>1.000008</td>\n",
       "      <td>-1.697258</td>\n",
       "      <td>0.017397</td>\n",
       "      <td>1.732052</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>stays_in_weekend_nights</th>\n",
       "      <td>65229.0</td>\n",
       "      <td>1.067519e-17</td>\n",
       "      <td>1.000008</td>\n",
       "      <td>-0.966858</td>\n",
       "      <td>0.204828</td>\n",
       "      <td>3.719888</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>reserved_room_type_F</th>\n",
       "      <td>65229.0</td>\n",
       "      <td>-1.612171e-17</td>\n",
       "      <td>1.000008</td>\n",
       "      <td>-0.137653</td>\n",
       "      <td>-0.137653</td>\n",
       "      <td>7.264636</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>reserved_room_type_G</th>\n",
       "      <td>65229.0</td>\n",
       "      <td>-1.132877e-17</td>\n",
       "      <td>1.000008</td>\n",
       "      <td>-0.095702</td>\n",
       "      <td>-0.095702</td>\n",
       "      <td>10.449121</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>customer_type_Group</th>\n",
       "      <td>65229.0</td>\n",
       "      <td>-1.830032e-17</td>\n",
       "      <td>1.000008</td>\n",
       "      <td>-0.066478</td>\n",
       "      <td>-0.066478</td>\n",
       "      <td>15.042564</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>customer_type_Transient</th>\n",
       "      <td>65229.0</td>\n",
       "      <td>4.182931e-17</td>\n",
       "      <td>1.000008</td>\n",
       "      <td>-1.518248</td>\n",
       "      <td>0.658654</td>\n",
       "      <td>0.658654</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>customer_type_Transient-Party</th>\n",
       "      <td>65229.0</td>\n",
       "      <td>4.182931e-17</td>\n",
       "      <td>1.000008</td>\n",
       "      <td>-0.586692</td>\n",
       "      <td>-0.586692</td>\n",
       "      <td>1.704473</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>197 rows × 6 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                       count          mean       std  \\\n",
       "lead_time                            65229.0 -3.311487e-17  1.000008   \n",
       "arrival_date_year                    65229.0 -1.588817e-13  1.000008   \n",
       "arrival_date_week_number             65229.0  0.000000e+00  1.000008   \n",
       "arrival_date_day_of_month            65229.0  2.091466e-17  1.000008   \n",
       "stays_in_weekend_nights              65229.0  1.067519e-17  1.000008   \n",
       "...                                      ...           ...       ...   \n",
       "reserved_room_type_F                 65229.0 -1.612171e-17  1.000008   \n",
       "reserved_room_type_G                 65229.0 -1.132877e-17  1.000008   \n",
       "customer_type_Group                  65229.0 -1.830032e-17  1.000008   \n",
       "customer_type_Transient              65229.0  4.182931e-17  1.000008   \n",
       "customer_type_Transient-Party        65229.0  4.182931e-17  1.000008   \n",
       "\n",
       "                                          min       50%        max  \n",
       "lead_time                           -1.002196 -0.336409   2.888498  \n",
       "arrival_date_year                   -1.599681  0.625124   0.625124  \n",
       "arrival_date_week_number            -2.253413  0.197582   1.608761  \n",
       "arrival_date_day_of_month           -1.697258  0.017397   1.732052  \n",
       "stays_in_weekend_nights             -0.966858  0.204828   3.719888  \n",
       "...                                       ...       ...        ...  \n",
       "reserved_room_type_F                -0.137653 -0.137653   7.264636  \n",
       "reserved_room_type_G                -0.095702 -0.095702  10.449121  \n",
       "customer_type_Group                 -0.066478 -0.066478  15.042564  \n",
       "customer_type_Transient             -1.518248  0.658654   0.658654  \n",
       "customer_type_Transient-Party       -0.586692 -0.586692   1.704473  \n",
       "\n",
       "[197 rows x 6 columns]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Количество дублированных строк: 21606\n"
     ]
    }
   ],
   "source": [
    "scaler = StandardScaler()\n",
    "scaler.fit(features_train)\n",
    "\n",
    "features_train = pd.DataFrame(\n",
    "    scaler.transform(features_train),\n",
    "    columns=features_train.columns,\n",
    "    index=features_train.index)\n",
    "\n",
    "features_test = pd.DataFrame(\n",
    "    scaler.transform(features_test),\n",
    "    columns=features_test.columns,\n",
    "    index=features_test.index)\n",
    "\n",
    "describe_dataframe(features_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### <b>Выводы к параграфу:</b> \n",
    "    Был проведен исследовательский анализ данных, в ходе которого были устранены недочеты данных, такие как пробелы и символы табуляции в колонках и значениях датафреймов. Также были исследованы аномальные значения в колонках с количество постояльцев, временем подтверждения заказа, машино-мест и общим временем пребывания. Данные не имеют неестественных или явно ошибочных значений, 10 детей и 8 машин - это не частое, но возможное требование. Модель машинного обучения должна учитывать экстравагантные предпочтения постаяльцев, поэтому данные будут приняты в работы наряду с остальными.\n",
    "    Далее данные были кодированы и нормализованы для оптимизации параметров моделей машинного обучения."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-success\">\n",
    "<h2> Комментарий ревьюера <a class=\"tocSkip\"> </h2>\n",
    "\n",
    "<b>Все отлично!👍:</b> \n",
    "    \n",
    "Масштабирование проведено корректно, молодец."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Шаг 3. Формулировка ML-задачи на основе бизнес-задачи"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Основная бизнес-метрика для любой сети отелей — её прибыль. Прибыль отеля — это разница между стоимостью номера за все ночи и затраты на обслуживание: как при подготовке номера, так и при проживании постояльца.\n",
    "В отеле есть несколько типов номеров. В зависимости от типа номера назначается стоимость за одну ночь. Есть также затраты на уборку. Если клиент снял номер надолго, то убираются каждые два дня.\n",
    "Стоимость номеров отеля:\n",
    "категория A: за ночь — 1 000, разовое обслуживание — 400;\n",
    "категория B: за ночь — 800, разовое обслуживание — 350;\n",
    "категория C: за ночь — 600, разовое обслуживание — 350;\n",
    "категория D: за ночь — 550, разовое обслуживание — 150;\n",
    "категория E: за ночь — 500, разовое обслуживание — 150;\n",
    "категория F: за ночь — 450, разовое обслуживание — 150;\n",
    "категория G: за ночь — 350, разовое обслуживание — 150.\n",
    "В ценовой политике отеля используются сезонные коэффициенты: весной и осенью цены повышаются на 20%, летом — на 40%.\n",
    "Убытки отеля в случае отмены брони номера — это стоимость одной уборки и одной ночи с учётом сезонного коэффициента.\n",
    "На разработку системы прогнозирования заложен бюджет — 400 000. При этом необходимо учесть, что внедрение модели должно окупиться за тестовый период. Затраты на разработку должны быть меньше той выручки, которую система принесёт компании."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Вычислим прибыль отеля и оцените прибыль отеля без внедрения депозитов."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "room_service_costs = {  # reserved_room_type\n",
    "    \"A\": 400,\n",
    "    \"B\": 350,\n",
    "    \"C\": 350,\n",
    "    \"D\": 150,\n",
    "    \"E\": 150,\n",
    "    \"F\": 150,\n",
    "    \"G\": 150\n",
    "}\n",
    "season_coefficients = {  # arrival_date_month\n",
    "    \"October\": 1.2,\n",
    "    \"September\": 1.2,\n",
    "    \"August\": 1.4,\n",
    "    \"November\": 1.2,\n",
    "    \"July\": 1.4,\n",
    "    \"December\": 1,\n",
    "    \"April\": 1.2,\n",
    "    \"May\": 1.2,\n",
    "    \"June\": 1.4,\n",
    "    \"March\": 1.2,\n",
    "    \"February\": 1,\n",
    "    \"January\": 1\n",
    "}\n",
    "room_costs = {\n",
    "    \"A\": 1000,\n",
    "    \"B\": 800,\n",
    "    \"C\": 600,\n",
    "    \"D\": 550,\n",
    "    \"E\": 500,\n",
    "    \"F\": 450,\n",
    "    \"G\": 350\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_profit(row):\n",
    "    service_cost = room_service_costs[row['reserved_room_type'].strip()]\n",
    "    room_cost = room_costs[row['reserved_room_type']]\n",
    "    season_coefficient = season_coefficients[row['arrival_date_month']]\n",
    "    if not row['is_canceled']:\n",
    "        revenue = row['total_nights'] * room_cost * season_coefficient\n",
    "        losses = service_cost * row['num_cleaning']\n",
    "        return revenue - losses\n",
    "    return -(service_cost + room_cost * season_coefficient)\n",
    "\n",
    "# после этого просто суммируем столбец через sum"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "hotel_test['reserved_room_type'] = hotel_test['reserved_room_type'].str.strip()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "hotel_test['num_cleaning'] = hotel_test['total_nights'].apply(lambda x: ceil(x / 2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "hotel_test['profit'] = hotel_test.apply(get_profit, axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Прибыль компании без учета убытков от отмены бронирования: 53342330.0 у.е.'"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full_revenue = hotel_test['profit'][hotel_test['profit'] > 0].sum()\n",
    "f\"Прибыль компании без учета убытков от отмены бронирования: {full_revenue} у.е.\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Убыток компании от отмены бронирования: -18041560.0 у.е.'"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full_losses = hotel_test['profit'][hotel_test['profit'] < 0].sum()\n",
    "f\"Убыток компании от отмены бронирования: {full_losses} у.е.\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "revenue_without_deposite = full_revenue + full_losses"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Прибыль компании без внедрения депозита: 35300770.0 у.е.'"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f\"Прибыль компании без внедрения депозита: {revenue_without_deposite} у.е.\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Средняя прибыль компании от одного бронирования:  1089.1 у.е.'"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mean_profit = hotel_test['profit'].mean()\n",
    "f\"Средняя прибыль компании от одного бронирования: {mean_profit: .5} у.е.\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "С помощью внедрения депозитов планируется увеличить прибыль компании более чем на 400т.у.е. за 8 месяцев (представленных в тестовом датафрейме).\n",
    "Также необходимо повысить среднюю прибыль с одного бронирования."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-success\">\n",
    "<h2> Комментарий ревьюера <a class=\"tocSkip\"> </h2>\n",
    "\n",
    "<b>Все отлично!👍:</b> \n",
    "    \n",
    "    \n",
    "прибыль до внедрения депозитов расчитана верно."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Шаг 4. Разработка модели ML"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Рассмотрим 4 метрики для оценки точности модели:\n",
    "- accuracy\n",
    "- precision\n",
    "- recall\n",
    "- f1score"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Полнота (recall) и точность (precision) оценивают качество прогноза положительного класса с разных позиций. Recall описывает, как хорошо модель разобралась в особенностях этого класса и распознала его. Precision выявляет, не переусердствует ли модель, присваивая положительные метки. Accuracy показывает насколько часто модель предсказывает целевую метрику.\n",
    "В данном случае важны все 3 метрики. Контролировать их параллельно помогают агрегирующие метрики, одна из которых — F1-мера (англ. F1-score), а также метрика auc_roc. Это среднее гармоническое полноты и точности. Единица в F1 означает, что соотношение полноты и точности равно 1:1.\n",
    "Выберем f1score определяющей метрикой, в дополнение к ней рассмотрим метрику roc_auc."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-success\">\n",
    "<h2> Комментарий ревьюера <a class=\"tocSkip\"> </h2>\n",
    "\n",
    "<b>Все отлично!👍:</b> \n",
    "   \n",
    "Отлично, что есть обоснование выбора метрики."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "def roc_graph(tv, pv):\n",
    "    fpr, tpr, thresholds = roc_curve(tv, pv)\n",
    "    roc_auc = auc(fpr, tpr)\n",
    "    plt.title('Receiver Operating Characteristic')\n",
    "    plt.plot(fpr, tpr, 'b', label = 'AUC = %0.2f' % roc_auc)\n",
    "    plt.legend(loc = 'lower right')\n",
    "    plt.plot([0, 1], [0, 1],'r--')\n",
    "    plt.xlim([0, 1])\n",
    "    plt.ylim([0, 1])\n",
    "    plt.ylabel('True Positive Rate')\n",
    "    plt.xlabel('False Positive Rate')\n",
    "    plt.grid()\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Для начала проверим модель на адекватность."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.5595626958202786"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "display(f1_score(target_test, pd.Series(1, index=target_test.index)))\n",
    "roc_graph(target_test, pd.Series(1, index=target_test.index))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "f1 метрика неадекватной модели высока, но график AUC-ROC лежит по диагонали."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Оценим дисбаланс классов в целевой метрике, в этом нам поможет accuracy_score:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.3884672343576453"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "accuracy_score(target_test, pd.Series(1, index=target_test.index))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Наблюдается явный дисбаланс классов в сторону отсутствия отмены бронирования."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "target_test.hist()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-success\">\n",
    "<h2> Комментарий ревьюера <a class=\"tocSkip\"> </h2>\n",
    "\n",
    "<b>Все отлично!👍:</b> \n",
    "    \n",
    "Отлично, что есть сравнение с константной моделью."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "<div class=\"alert alert-block alert-danger\">\n",
    "<h2> Комментарий ревьюера <a class=\"tocSkip\"></h2>\n",
    "\n",
    "    \n",
    "<b>На доработку🤔:</b>\n",
    "    \n",
    "Стоит также проверить целевую переменную на ниличие дисбаланса классов.\n",
    "    \n",
    "<div class=\"alert alert-info\", padding: 15px>\n",
    "<strong>Комментарий студента:</strong>\n",
    "    Добавил проверку дисбаланса классов, добавил график для целевого признака.\n",
    "</div>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-success\">\n",
    "<h2> Комментарий ревьюера №2<a class=\"tocSkip\"> </h2>\n",
    "\n",
    "<b>Все отлично!👍</b> "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Борьба с дисбалансом"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Для борьбы с дисбалансом будем использовать класс SMOTE, а для апскейлинга при кросс-валидации используем **pipeline** из библиотеки imblearn."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Определим фолд для однородной разбивки данных:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "kf = KFold(n_splits=5, random_state=32123, shuffle=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "<div class=\"alert alert-block alert-danger\">\n",
    "<h2> Комментарий ревьюера №3<a class=\"tocSkip\"></h2>\n",
    "\n",
    "    \n",
    "<b>На доработку🤔:</b>\n",
    "    \n",
    "Посмотри, пожалуйста, сейчас код выдает ошибку.\n",
    "    \n",
    "Кроме того изменение баланса классов в первоначальных данных нужно производить только на обучающей выборке, а в случае кросс-валидации ещё и только на фолдах в состоянии обучения. Этот момент учитывает **pipeline** в своей работе.\n",
    "    \n",
    "В тестовом фолде ведь баланс классов должен соответствовать балансу на исходной выборке, чтобы была возможность оценить потенциальное смещение модели\n",
    "    \n",
    "Если используешь кросс-валидацию, то upsampling или downsampling надо вписывать в pipeline с cv. Посмотри, пожалуйста, pipeline из библиотеки imblearn, там он учитывает эту проблему.\n",
    "\n",
    "Вот здесь можно прочесть про это и посмотреть примеры.   \n",
    "    \n",
    "https://academy.yandex.ru/handbook/ml/article/kross-validaciya\n",
    "    \n",
    "https://imbalanced-learn.org/stable/common_pitfalls.html\n",
    "    \n",
    "https://datascience.xyz/practice/kak-delat-kross-validaciju-pri-apsemplinge-dannyh.html\n",
    "    \n",
    "<div class=\"alert alert-info\", padding: 15px>\n",
    "<strong>Комментарий студента:</strong>\n",
    "    Ошибку устранил. Всё переделал.\n",
    "</div>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Исследование различных моделей машинного обучения"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Модель дерева решений"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Определим набор параметров для модели дерева решений:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "params = {\n",
    "    'criterion': ['gini', 'entropy'],\n",
    "    'max_depth': range(2, 18, 2),\n",
    "    'random_state': [32123]\n",
    "}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Создадим пайплайн:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "dt_pipeline = make_pipeline(SMOTE(random_state=32123),\n",
    "                            DecisionTreeClassifier())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Создадим сетку моделей:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "new_params = {'decisiontreeclassifier__' + key: params[key] for key in params}\n",
    "grid_dt = GridSearchCV(dt_pipeline, param_grid=new_params, cv=kf, scoring='roc_auc',\n",
    "                         return_train_score=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Определим наилучшие параметры модели дерева решений:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'decisiontreeclassifier__criterion': 'entropy',\n",
       " 'decisiontreeclassifier__max_depth': 12,\n",
       " 'decisiontreeclassifier__random_state': 32123}"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grid_dt.fit(features_train, target_train)\n",
    "grid_dt.best_params_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Средняя оценка лучшей dt модели: 0.9157977512904674, Глубина дерева: 12, Лучший критерий: entropy'"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f\"Средняя оценка лучшей dt модели: {grid_dt.best_score_}, Глубина дерева: {grid_dt.best_params_['decisiontreeclassifier__max_depth']}, Лучший критерий: {grid_dt.best_params_['decisiontreeclassifier__criterion']}\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "<div class=\"alert alert-block alert-danger\">\n",
    "<h2> Комментарий ревьюера <a class=\"tocSkip\"></h2>\n",
    "\n",
    "    \n",
    "<b>На доработку🤔:</b>\n",
    "    \n",
    "    \n",
    "В процессе анализа качество моделей стоит проверить на кросс-валидации.\n",
    "    \n",
    "Выбрать лучшую модель, исходя из полученных результатов.\n",
    "    \n",
    "И затем только ее проверить на тестовой выборке.\n",
    "    \n",
    "Использование тестовой выборки до этапа тестирования стоит исключить.\n",
    "    \n",
    "<div class=\"alert alert-info\", padding: 15px>\n",
    "<strong>Комментарий студента:</strong>\n",
    "    Исправил исследование, тестирование и выводы.\n",
    "</div>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-success\">\n",
    "<h2> Комментарий ревьюера №2<a class=\"tocSkip\"> </h2>\n",
    "\n",
    "<b>Все отлично!👍</b> "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-warning\">\n",
    "    <h2> Комментарий ревьюера №2<a class=\"tocSkip\"> </h2>\n",
    "    \n",
    "<b>Некоторые замечания и рекомендации💡:</b> \n",
    "        \n",
    "Для вычисления среднего результата кросс-валидации можно использовать метод mean"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Модель случайного леса"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Определим набор параметров для модели случайного леса:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "params = {'n_estimators': range(50, 250, 50),\n",
    " 'max_depth': range(4, 14, 2),\n",
    " 'random_state': [32123]}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Создадим пайплайн:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "rf_pipeline = make_pipeline(SMOTE(random_state=32123),\n",
    "                            RandomForestClassifier())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Создадим сетку моделей:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "rf_params = {'randomforestclassifier__' + key: params[key] for key in params}\n",
    "grid_rf = GridSearchCV(rf_pipeline, param_grid=rf_params, cv=kf, scoring='roc_auc',\n",
    "                       return_train_score=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Определим наилучшие параметры модели случайного леса:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'randomforestclassifier__max_depth': 12,\n",
       " 'randomforestclassifier__n_estimators': 200,\n",
       " 'randomforestclassifier__random_state': 32123}"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grid_rf.fit(features_train, target_train)\n",
    "grid_rf.best_params_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Средняя оценка лучшей rf модели: 0.9178589181865462, Глубина дерева: 12, Измерители: 200'"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f\"Средняя оценка лучшей rf модели: {grid_rf.best_score_}, Глубина дерева: {grid_rf.best_params_['randomforestclassifier__max_depth']}, Измерители: {grid_rf.best_params_['randomforestclassifier__n_estimators']}\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Модель логистической регрессии"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Определим набор параметров для модели логистической регрессии:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "params = {'solver': ['liblinear'],\n",
    "          'random_state': [32123]}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Создадим пайплайн:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [],
   "source": [
    "lr_pipeline = make_pipeline(SMOTE(random_state=32123),\n",
    "                            LogisticRegression())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Создадим сетку моделей:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [],
   "source": [
    "lr_params = {'logisticregression__' + key: params[key] for key in params}\n",
    "grid_lr = GridSearchCV(lr_pipeline, param_grid=lr_params, cv=kf, scoring='roc_auc',\n",
    "                       return_train_score=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Определим наилучшие параметры модели логистической регрессии:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'logisticregression__random_state': 32123,\n",
       " 'logisticregression__solver': 'liblinear'}"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grid_lr.fit(features_train, target_train)\n",
    "grid_lr.best_params_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Средняя оценка лучшей lr модели: 0.8773445615378282'"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f\"Средняя оценка лучшей lr модели: {grid_lr.best_score_}\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-block alert-danger\">\n",
    "<h2> Комментарий ревьюера <a class=\"tocSkip\"></h2>\n",
    "\n",
    "    \n",
    "<b>На доработку🤔:</b>\n",
    "    \n",
    "Как минимум для 2х моделей стоит перебрать как минимум по 2 гиперпараметра. \n",
    "<div class=\"alert alert-info\", padding: 15px>\n",
    "<strong>Комментарий студента:</strong>\n",
    "    Добавил подбор criterion для DT модели.\n",
    "</div>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-success\">\n",
    "<h2> Комментарий ревьюера №2 <a class=\"tocSkip\"> </h2>\n",
    "\n",
    "<b>Все отлично!👍</b> \n",
    "    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-block alert-danger\">\n",
    "<h2> Комментарий ревьюера №2<a class=\"tocSkip\"></h2>\n",
    "\n",
    "    \n",
    "<b>На доработку🤔:</b>\n",
    "    \n",
    "Так как выяснилось, что есть дисбаланс, то стоит проводить обучение (кросс-валидацию) моделей с учетом дисбаланса. То есть стоит использовать тот или иной метод борьбы с дисбалансом.\n",
    "\n",
    "<div class=\"alert alert-info\", padding: 15px>\n",
    "<strong>Комментарий студента:</strong>\n",
    "    Борьба добавлена. Исмользовал готовую функциию SMOTE. Для теста соответственно никакой дисбаланс не учитывался, только при обучнии. Качество модели заметно повысилась! Спасибо!\n",
    "</div>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-success\">\n",
    "<h2> Комментарий ревьюера №3 <a class=\"tocSkip\"> </h2>\n",
    "\n",
    "<b>Все отлично!👍</b> \n",
    "    \n",
    "Спасибо за борьбу)\n",
    "    \n",
    "Да, молодец, что не меняешь изначальный баланс классов в тестовой выборке. Также еще нужно учесть, чтобы не менялся баланс классов у валидационных фолдов в процессе кросс-валидации. С этим поможет pipeline.\n",
    "    \n",
    "Выше написала подробнее."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Выводы: \n",
    "Наилучшими моделями, показавшими идентичный результат оказались DecisionTree и RandomForest. Обе модели показали метрику roc_auc = 0.92. Выберем для теста модель DecisionTree как самую легковесную."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Тестирование наилучшей модели"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Тестирование модели дерева решений"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "best_dt_model = DecisionTreeClassifier(\n",
    "    random_state=32123,\n",
    "    max_depth=grid_dt.best_params_['decisiontreeclassifier__max_depth'],\n",
    "    criterion=grid_dt.best_params_['decisiontreeclassifier__criterion'],\n",
    "    splitter='best')\n",
    "best_dt_model.fit(features_train, target_train)\n",
    "best_predicted_valid = best_dt_model.predict(features_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'f1 score наилучшей модели на тестовой выборке: 0.6288420554108454'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "best_dt_model_f1 = f1_score(target_test, best_predicted_valid)\n",
    "display(f\"f1 score наилучшей модели на тестовой выборке: {best_dt_model_f1}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "roc_graph(target_test, best_predicted_valid)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>is_canceled</th>\n",
       "      <th>lead_time</th>\n",
       "      <th>arrival_date_year</th>\n",
       "      <th>arrival_date_month</th>\n",
       "      <th>arrival_date_week_number</th>\n",
       "      <th>arrival_date_day_of_month</th>\n",
       "      <th>stays_in_weekend_nights</th>\n",
       "      <th>stays_in_week_nights</th>\n",
       "      <th>adults</th>\n",
       "      <th>...</th>\n",
       "      <th>reserved_room_type</th>\n",
       "      <th>booking_changes</th>\n",
       "      <th>days_in_waiting_list</th>\n",
       "      <th>customer_type</th>\n",
       "      <th>required_car_parking_spaces</th>\n",
       "      <th>total_of_special_requests</th>\n",
       "      <th>total_nights</th>\n",
       "      <th>num_cleaning</th>\n",
       "      <th>profit</th>\n",
       "      <th>best_dt_model_predicted_valid</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>6086</td>\n",
       "      <td>1</td>\n",
       "      <td>74.0</td>\n",
       "      <td>2017</td>\n",
       "      <td>January</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>...</td>\n",
       "      <td>A</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Transient</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>-1400.0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>6095</td>\n",
       "      <td>1</td>\n",
       "      <td>48.0</td>\n",
       "      <td>2017</td>\n",
       "      <td>January</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>2.0</td>\n",
       "      <td>...</td>\n",
       "      <td>A</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>Transient</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>-1400.0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>6096</td>\n",
       "      <td>1</td>\n",
       "      <td>31.0</td>\n",
       "      <td>2017</td>\n",
       "      <td>January</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>2.0</td>\n",
       "      <td>...</td>\n",
       "      <td>G</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Transient</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>-500.0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>6098</td>\n",
       "      <td>1</td>\n",
       "      <td>173.0</td>\n",
       "      <td>2017</td>\n",
       "      <td>January</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>2.0</td>\n",
       "      <td>...</td>\n",
       "      <td>G</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>Transient</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>-500.0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>6099</td>\n",
       "      <td>1</td>\n",
       "      <td>23.0</td>\n",
       "      <td>2017</td>\n",
       "      <td>January</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>2.0</td>\n",
       "      <td>...</td>\n",
       "      <td>D</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Transient</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>-700.0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18301</th>\n",
       "      <td>70397</td>\n",
       "      <td>1</td>\n",
       "      <td>194.0</td>\n",
       "      <td>2017</td>\n",
       "      <td>May</td>\n",
       "      <td>21</td>\n",
       "      <td>25</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>2.0</td>\n",
       "      <td>...</td>\n",
       "      <td>D</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Transient</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>-810.0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22331</th>\n",
       "      <td>87823</td>\n",
       "      <td>1</td>\n",
       "      <td>16.0</td>\n",
       "      <td>2017</td>\n",
       "      <td>April</td>\n",
       "      <td>15</td>\n",
       "      <td>12</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1.0</td>\n",
       "      <td>...</td>\n",
       "      <td>A</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Transient</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>-1600.0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22347</th>\n",
       "      <td>87839</td>\n",
       "      <td>1</td>\n",
       "      <td>13.0</td>\n",
       "      <td>2017</td>\n",
       "      <td>May</td>\n",
       "      <td>22</td>\n",
       "      <td>29</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "      <td>...</td>\n",
       "      <td>A</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Transient</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>-1600.0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22350</th>\n",
       "      <td>87842</td>\n",
       "      <td>1</td>\n",
       "      <td>13.0</td>\n",
       "      <td>2017</td>\n",
       "      <td>May</td>\n",
       "      <td>22</td>\n",
       "      <td>29</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "      <td>...</td>\n",
       "      <td>A</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Transient</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>-1600.0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26085</th>\n",
       "      <td>91577</td>\n",
       "      <td>1</td>\n",
       "      <td>6.0</td>\n",
       "      <td>2017</td>\n",
       "      <td>July</td>\n",
       "      <td>29</td>\n",
       "      <td>17</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>...</td>\n",
       "      <td>A</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Transient</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>-1800.0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>6639 rows × 28 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "          id  is_canceled  lead_time  arrival_date_year arrival_date_month  \\\n",
       "0       6086            1       74.0               2017            January   \n",
       "9       6095            1       48.0               2017            January   \n",
       "10      6096            1       31.0               2017            January   \n",
       "12      6098            1      173.0               2017            January   \n",
       "13      6099            1       23.0               2017            January   \n",
       "...      ...          ...        ...                ...                ...   \n",
       "18301  70397            1      194.0               2017                May   \n",
       "22331  87823            1       16.0               2017              April   \n",
       "22347  87839            1       13.0               2017                May   \n",
       "22350  87842            1       13.0               2017                May   \n",
       "26085  91577            1        6.0               2017               July   \n",
       "\n",
       "       arrival_date_week_number  arrival_date_day_of_month  \\\n",
       "0                             1                          1   \n",
       "9                             1                          2   \n",
       "10                            1                          2   \n",
       "12                            1                          2   \n",
       "13                            1                          3   \n",
       "...                         ...                        ...   \n",
       "18301                        21                         25   \n",
       "22331                        15                         12   \n",
       "22347                        22                         29   \n",
       "22350                        22                         29   \n",
       "26085                        29                         17   \n",
       "\n",
       "       stays_in_weekend_nights  stays_in_week_nights  adults  ...  \\\n",
       "0                            1                     0     2.0  ...   \n",
       "9                            1                     4     2.0  ...   \n",
       "10                           1                     4     2.0  ...   \n",
       "12                           1                     5     2.0  ...   \n",
       "13                           0                     2     2.0  ...   \n",
       "...                        ...                   ...     ...  ...   \n",
       "18301                        0                     3     2.0  ...   \n",
       "22331                        0                     1     1.0  ...   \n",
       "22347                        1                     2     1.0  ...   \n",
       "22350                        1                     2     1.0  ...   \n",
       "26085                        1                     0     1.0  ...   \n",
       "\n",
       "       reserved_room_type  booking_changes days_in_waiting_list customer_type  \\\n",
       "0                       A                0                    0     Transient   \n",
       "9                       A                1                    0     Transient   \n",
       "10                      G                0                    0     Transient   \n",
       "12                      G                2                    0     Transient   \n",
       "13                      D                0                    0     Transient   \n",
       "...                   ...              ...                  ...           ...   \n",
       "18301                   D                0                    0     Transient   \n",
       "22331                   A                0                    0     Transient   \n",
       "22347                   A                0                    0     Transient   \n",
       "22350                   A                0                    0     Transient   \n",
       "26085                   A                0                    0     Transient   \n",
       "\n",
       "      required_car_parking_spaces  total_of_special_requests  total_nights  \\\n",
       "0                               0                          0             1   \n",
       "9                               0                          2             5   \n",
       "10                              0                          0             5   \n",
       "12                              0                          1             6   \n",
       "13                              0                          0             2   \n",
       "...                           ...                        ...           ...   \n",
       "18301                           0                          0             3   \n",
       "22331                           0                          0             1   \n",
       "22347                           0                          0             3   \n",
       "22350                           0                          0             3   \n",
       "26085                           0                          0             1   \n",
       "\n",
       "       num_cleaning  profit  best_dt_model_predicted_valid  \n",
       "0                 1 -1400.0                              1  \n",
       "9                 3 -1400.0                              1  \n",
       "10                3  -500.0                              1  \n",
       "12                3  -500.0                              1  \n",
       "13                1  -700.0                              1  \n",
       "...             ...     ...                            ...  \n",
       "18301             2  -810.0                              1  \n",
       "22331             1 -1600.0                              1  \n",
       "22347             2 -1600.0                              1  \n",
       "22350             2 -1600.0                              1  \n",
       "26085             1 -1800.0                              1  \n",
       "\n",
       "[6639 rows x 28 columns]"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "hotel_test['best_dt_model_predicted_valid'] = best_predicted_valid\n",
    "hotel_test.query('best_dt_model_predicted_valid > 0 and profit < 0')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Вычиcлим полученную с данных предсказаний прибыль: Так как депозит составляет 80% от суммы бронирования и уборки, следовательно, убытки составят только 20% от убытков в предсказанных моделью случаях."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [],
   "source": [
    "hotel_test.loc[(hotel_test['best_dt_model_predicted_valid'] > 0) & (hotel_test['profit'] < 0), 'profit'] = hotel_test.query('best_dt_model_predicted_valid > 0 and profit < 0')['profit'] * 0.2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-success\">\n",
    "<h2> Комментарий ревьюера <a class=\"tocSkip\"> </h2>\n",
    "\n",
    "<b>Все отлично!👍:</b> \n",
    "    \n",
    "Молодец, что не проводишь весь расчет заново, а учитываешь только разницу в размере депозита."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Прибыль компании без учета убытков от отмены бронирования: 53342330.0 у.е.'"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full_revenue = hotel_test['profit'][hotel_test['profit'] > 0].sum()\n",
    "f\"Прибыль компании без учета убытков от отмены бронирования: {full_revenue} у.е.\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Убыток компании от отмены бронирования: -10302912.0 у.е.'"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full_losses = hotel_test['profit'][hotel_test['profit'] < 0].sum()\n",
    "f\"Убыток компании от отмены бронирования: {full_losses} у.е.\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [],
   "source": [
    "revenue_with_deposite = full_revenue + full_losses"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Прибыль компании с внедрением депозита: 43039418.0 у.е.'"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f\"Прибыль компании с внедрением депозита: {revenue_with_deposite} у.е.\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Прибыль компании от внедрения депозита: 7738648.0 у.е.'"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f\"Прибыль компании от внедрения депозита: {revenue_with_deposite - revenue_without_deposite} у.е.\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Средняя прибыль компании от одного бронирования:  1327.9 у.е.'"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mean_profit = hotel_test['profit'].mean()\n",
    "f\"Средняя прибыль компании от одного бронирования: {mean_profit: .5} у.е.\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Результат таков: На протяжении 8 месяцев тестирования модели машинного обучения чистая прибыль компании увеличилась на 8 млн. 812 тыс. у.е., что в 22 раза превышает затраты на разработку и внедрение модели машинного обучения. Также средняя прибыль компании увеличилась на 280 у.е. или на 27%."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Шаг 5. Опишите портрет «ненадёжного» клиента"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Отделим клиентов, которым была предсказана отмена бронирования и изучим их особенности."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [],
   "source": [
    "predicted = hotel_test[hotel_test['best_dt_model_predicted_valid'] > 0]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Проведем исследовательский анализ данных."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'1 Колонка: arrival_date_month'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "May         1549\n",
       "April       1507\n",
       "June        1479\n",
       "March       1124\n",
       "July         768\n",
       "February     756\n",
       "January      698\n",
       "August       643\n",
       "Name: arrival_date_month, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'2 Колонка: meal'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "BB    6668\n",
       "SC    1383\n",
       "HB     455\n",
       "FB      18\n",
       "Name: meal, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'3 Колонка: country'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "PRT    5511\n",
       "GBR     495\n",
       "FRA     450\n",
       "ESP     246\n",
       "ITA     236\n",
       "       ... \n",
       "TZA       1\n",
       "MDV       1\n",
       "IDN       1\n",
       "PER       1\n",
       "GNB       1\n",
       "Name: country, Length: 82, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'4 Колонка: distribution_channel'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "TA/TO        7856\n",
       "Corporate     339\n",
       "Direct        324\n",
       "GDS             5\n",
       "Name: distribution_channel, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'5 Колонка: reserved_room_type'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "A    6314\n",
       "D    1754\n",
       "F     150\n",
       "E     129\n",
       "G      89\n",
       "C      53\n",
       "B      35\n",
       "Name: reserved_room_type, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'6 Колонка: customer_type'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "Transient          7790\n",
       "Transient-Party     680\n",
       "Contract             40\n",
       "Group                14\n",
       "Name: customer_type, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "display_objects(predicted)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'1 Колонка: id'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "20482    1\n",
       "49789    1\n",
       "90777    1\n",
       "6806     1\n",
       "45715    1\n",
       "        ..\n",
       "50514    1\n",
       "46412    1\n",
       "52555    1\n",
       "50506    1\n",
       "53246    1\n",
       "Name: id, Length: 8524, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'2 Колонка: is_canceled'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "1    6639\n",
       "0    1885\n",
       "Name: is_canceled, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'3 Колонка: lead_time'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "56.0     151\n",
       "28.0     140\n",
       "38.0     120\n",
       "156.0    118\n",
       "175.0    110\n",
       "        ... \n",
       "353.0      1\n",
       "346.0      1\n",
       "285.0      1\n",
       "356.0      1\n",
       "245.0      1\n",
       "Name: lead_time, Length: 350, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'4 Колонка: arrival_date_year'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "2017    8524\n",
       "Name: arrival_date_year, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'5 Колонка: arrival_date_week_number'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "20    532\n",
       "17    434\n",
       "23    385\n",
       "18    380\n",
       "14    376\n",
       "22    371\n",
       "15    359\n",
       "24    349\n",
       "11    321\n",
       "25    310\n",
       "16    291\n",
       "26    290\n",
       "12    262\n",
       "7     251\n",
       "9     250\n",
       "4     228\n",
       "21    227\n",
       "19    225\n",
       "13    205\n",
       "28    203\n",
       "30    196\n",
       "10    195\n",
       "33    195\n",
       "8     188\n",
       "2     183\n",
       "27    169\n",
       "3     155\n",
       "31    151\n",
       "5     144\n",
       "29    135\n",
       "32    134\n",
       "34    129\n",
       "6     120\n",
       "1     104\n",
       "35     77\n",
       "Name: arrival_date_week_number, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'6 Колонка: arrival_date_day_of_month'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "15    475\n",
       "26    408\n",
       "19    353\n",
       "9     349\n",
       "14    334\n",
       "23    331\n",
       "8     329\n",
       "1     328\n",
       "20    308\n",
       "17    304\n",
       "25    291\n",
       "6     279\n",
       "21    275\n",
       "13    273\n",
       "28    272\n",
       "2     271\n",
       "3     266\n",
       "4     263\n",
       "16    260\n",
       "12    253\n",
       "27    245\n",
       "5     244\n",
       "30    244\n",
       "18    240\n",
       "11    237\n",
       "24    225\n",
       "10    207\n",
       "22    199\n",
       "29    175\n",
       "7     165\n",
       "31    121\n",
       "Name: arrival_date_day_of_month, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'7 Колонка: stays_in_weekend_nights'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "0    3791\n",
       "2    2404\n",
       "1    2295\n",
       "4      20\n",
       "3      14\n",
       "Name: stays_in_weekend_nights, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'8 Колонка: stays_in_week_nights'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "2    2618\n",
       "3    2254\n",
       "1    1886\n",
       "4     716\n",
       "5     597\n",
       "0     405\n",
       "6      48\n",
       "Name: stays_in_week_nights, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'9 Колонка: adults'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "2.0    6600\n",
       "1.0    1350\n",
       "3.0     550\n",
       "0.0      20\n",
       "4.0       4\n",
       "Name: adults, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'10 Колонка: children'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "0.0    7875\n",
       "1.0     381\n",
       "2.0     266\n",
       "3.0       2\n",
       "Name: children, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'11 Колонка: babies'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "0.0    8507\n",
       "1.0      16\n",
       "2.0       1\n",
       "Name: babies, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'12 Колонка: is_repeated_guest'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "0    8463\n",
       "1      61\n",
       "Name: is_repeated_guest, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'13 Колонка: previous_cancellations'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "0    8480\n",
       "1      36\n",
       "2       3\n",
       "4       2\n",
       "6       2\n",
       "3       1\n",
       "Name: previous_cancellations, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'14 Колонка: previous_bookings_not_canceled'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "0     8454\n",
       "1       28\n",
       "2        7\n",
       "7        5\n",
       "4        5\n",
       "6        4\n",
       "3        3\n",
       "5        3\n",
       "9        2\n",
       "14       2\n",
       "21       1\n",
       "15       1\n",
       "30       1\n",
       "27       1\n",
       "13       1\n",
       "8        1\n",
       "19       1\n",
       "18       1\n",
       "64       1\n",
       "16       1\n",
       "71       1\n",
       "Name: previous_bookings_not_canceled, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'15 Колонка: booking_changes'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "0    8067\n",
       "1     302\n",
       "2     120\n",
       "3      23\n",
       "4       6\n",
       "5       3\n",
       "6       3\n",
       "Name: booking_changes, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'16 Колонка: days_in_waiting_list'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "0      8420\n",
       "71        6\n",
       "46        5\n",
       "59        5\n",
       "26        4\n",
       "44        4\n",
       "16        4\n",
       "28        4\n",
       "17        4\n",
       "7         3\n",
       "5         3\n",
       "60        3\n",
       "34        3\n",
       "11        2\n",
       "14        2\n",
       "22        2\n",
       "9         2\n",
       "20        2\n",
       "56        2\n",
       "27        2\n",
       "21        2\n",
       "23        2\n",
       "18        2\n",
       "30        1\n",
       "117       1\n",
       "175       1\n",
       "165       1\n",
       "111       1\n",
       "32        1\n",
       "63        1\n",
       "47        1\n",
       "15        1\n",
       "39        1\n",
       "38        1\n",
       "54        1\n",
       "31        1\n",
       "93        1\n",
       "33        1\n",
       "84        1\n",
       "53        1\n",
       "13        1\n",
       "57        1\n",
       "73        1\n",
       "113       1\n",
       "121       1\n",
       "2         1\n",
       "10        1\n",
       "25        1\n",
       "50        1\n",
       "35        1\n",
       "43        1\n",
       "99        1\n",
       "4         1\n",
       "12        1\n",
       "80        1\n",
       "76        1\n",
       "49        1\n",
       "100       1\n",
       "183       1\n",
       "Name: days_in_waiting_list, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'17 Колонка: required_car_parking_spaces'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "0    8507\n",
       "1      17\n",
       "Name: required_car_parking_spaces, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'18 Колонка: total_of_special_requests'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "0    8008\n",
       "1     383\n",
       "2     118\n",
       "3      13\n",
       "4       2\n",
       "Name: total_of_special_requests, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'19 Колонка: total_nights'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "3     2752\n",
       "2     2171\n",
       "4     1443\n",
       "1      819\n",
       "5      622\n",
       "7      480\n",
       "6      174\n",
       "8       38\n",
       "10      14\n",
       "9       11\n",
       "Name: total_nights, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'20 Колонка: num_cleaning'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "2    4195\n",
       "1    2990\n",
       "3     796\n",
       "4     518\n",
       "5      25\n",
       "Name: num_cleaning, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'21 Колонка: profit'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "-320.0      2730\n",
       "-360.0      1620\n",
       "-280.0       874\n",
       "-162.0       514\n",
       "-184.0       401\n",
       "            ... \n",
       " 12000.0       1\n",
       " 8330.0        1\n",
       " 5560.0        1\n",
       " 1460.0        1\n",
       " 450.0         1\n",
       "Name: profit, Length: 116, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "'22 Колонка: best_dt_model_predicted_valid'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "1    8524\n",
       "Name: best_dt_model_predicted_valid, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "display_digits(hotel_test[hotel_test['best_dt_model_predicted_valid'] > 0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "На основе исследовательского анализа данных оцени портрет клиента, склонного к отказу от брони:\n",
    " В основном это компании из 2х человек, которые бронируют номер первый раз на пару ночей. Номер в основном самый дешевый, а самые частые месяцы для отказа - это май и июнь.\n",
    " В основном отказываются от бронирования португальцы и граждане США."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-success\">\n",
    "<h2> Комментарий ревьюера <a class=\"tocSkip\"> </h2>\n",
    "\n",
    "<b>Все отлично!👍:</b> \n",
    "    \n",
    "Отлично, что есть описание ненадежного клиента."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Шаг 6. Напишите общий вывод"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "В данной работе была проведена комплексная работа по исследованию данных и разработке оптимальной модели машинного обучения для выполнения поставленной бизнес-задачи уменьшения убытков компании от отмены забронированных номеров отеля.\n",
    "В начале был проведен исследовательский анализ данных, в ходе которого были устранены недочеты данных, такие как пробелы и символы табуляции в колонках и значениях датафреймов. Далее данные были кодированы и нормализованы для оптимизации параметров моделей машинного обучения.\n",
    "После исследования адекватности общей модели и определения параметров 3х различных моделей ML, для работы была выбрана модель DecisionTree с глубиной = 12 и критерием выбора 'entropy'.\n",
    "Для выбора оптимальной модели была выбрана комплексная метрика F1 score, т.к. нас интересует баланс между полнотой и точностью определения отказа от бронирования. Данный продиктован тем, что излишняя полнота с недостатком точности определения может даже снизить прибыль компании. Падение прибыли в данном случаем может возникнуть из-за того, что неверно навязанный депозит может отпугнуть клиента, который не собирался отказываться от брони.\n",
    "В итоге тестирования модели в 8ми месячный период прибыль отеля увеличилась на 8.800 млн. у.е., что более чем в 22 раза больше бюджета, выделенного на разработку модели. Также средняя прибыль от одного чека увеличилась на 27%.\n",
    "Судя по предсказаниям лучшей модели в основном отказываются от номеров компании из 2х человек, которые бронируют номер первый раз на пару ночей. Номер в основном самый дешевый, а самые частые месяцы для отказа - это май и июнь.\n",
    " Чаще всего отказываются от бронирования португальцы и граждане США.\n",
    " По итогам работы затраты на разработку оказались гораздо меньше (в 22 раза) выручки компании от внедрения депозитов. Модель была введена успешно."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div style=\"border:solid Chocolate 2px; padding: 40px\">\n",
    "    \n",
    "<b>Общий вывод по проекту</b>\n",
    "\n",
    "Александр, спасибо за работу! Проект хороший, продуманный, структурно выдержанный, аккуратный. Однако стоит внести некоторые исправления, чтобы можно было считать работу завершенной.\n",
    "\n",
    "**Положительные моменты проекта, которые хочу еще раз подчеркнуть:**\n",
    "\n",
    "1. Есть первичный анализ данных \n",
    "2. Есть описание клиента склонного к отмене брони\n",
    "3. Исследовано 3 модели  ML\n",
    "4. Есть обоснование выбора метрики\n",
    "5. Расчет прибыли до и после внедрения системы депозитов верный\n",
    "\n",
    "\n",
    "\n",
    "**Замечания, на которые стоит обратить внимание при будущей работе:**\n",
    "    \n",
    "\n",
    "    \n",
    "    1. Как минимум для 2х моделей стоит подобрать как минимум по 2 гиперпараметра\n",
    "    2. На тестовой выборке стоит проверить только лучшую модель\n",
    "    3. Качество всех изучаемых моделей стоит оценить на кросс-валидации\n",
    "    4. Стоит оценить баланс классов в целевой переменной\n",
    "    5. Исправить порядковое кодирование\n",
    "    6. Проверить данные на наличие аномальных значений, построить графики\n",
    "\n",
    "\n",
    "Остальные комментарии ты найдешь выше.\n",
    "\n",
    "**Желаю удачи и жду твой проект на повторное ревью!**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div style=\"border:solid Chocolate 2px; padding: 40px\">\n",
    "    \n",
    "<b>Общий вывод по проекту №2</b>\n",
    "\n",
    "Александр, спасибо за работу,\n",
    "    \n",
    "в целом все отлично, осталось только учесть наличие дисбаланса при обучении моделей.\n",
    "    \n",
    "**Жду твой проект на следующее ревью**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div style=\"border:solid Chocolate 2px; padding: 40px\">\n",
    "    \n",
    "<b>Общий вывод по проекту №3</b>\n",
    "\n",
    "Александр, спасибо за работу,\n",
    "    \n",
    "посмотри, пожалуйста:\n",
    "    \n",
    "    1. код выдает ошибку\n",
    "    \n",
    "    2. стоит вписать изменение баланса классов и cv в pipeline\n",
    "    \n",
    "**Жду твой проект на следующее ревью**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div style=\"border:solid Chocolate 2px; padding: 40px\">\n",
    "    \n",
    "<b>Общий вывод по проекту №4</b>\n",
    "\n",
    "Александр, спасибо за работу,\n",
    "    \n",
    "**все хорошо, проект принимаю и жеалю успехов в дальнейшем!**"
   ]
  }
 ],
 "metadata": {
  "ExecuteTimeLog": [
   {
    "duration": 1780,
    "start_time": "2023-05-08T17:19:19.920Z"
   },
   {
    "duration": 9,
    "start_time": "2023-05-08T17:19:21.703Z"
   },
   {
    "duration": 983,
    "start_time": "2023-05-08T17:19:21.714Z"
   },
   {
    "duration": 13,
    "start_time": "2023-05-08T17:19:22.699Z"
   },
   {
    "duration": 153,
    "start_time": "2023-05-08T17:19:22.716Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-08T17:19:22.871Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-08T17:19:22.877Z"
   },
   {
    "duration": 60,
    "start_time": "2023-05-08T17:19:22.883Z"
   },
   {
    "duration": 30,
    "start_time": "2023-05-08T17:19:22.945Z"
   },
   {
    "duration": 235,
    "start_time": "2023-05-08T17:19:22.977Z"
   },
   {
    "duration": 59,
    "start_time": "2023-05-08T17:19:23.214Z"
   },
   {
    "duration": 71,
    "start_time": "2023-05-08T17:19:23.275Z"
   },
   {
    "duration": 8,
    "start_time": "2023-05-08T17:19:23.348Z"
   },
   {
    "duration": 9,
    "start_time": "2023-05-08T17:19:23.359Z"
   },
   {
    "duration": 296,
    "start_time": "2023-05-08T17:19:23.370Z"
   },
   {
    "duration": 317,
    "start_time": "2023-05-08T17:19:23.668Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-08T17:19:23.987Z"
   },
   {
    "duration": 20,
    "start_time": "2023-05-08T17:19:23.992Z"
   },
   {
    "duration": 17,
    "start_time": "2023-05-08T17:19:24.014Z"
   },
   {
    "duration": 15,
    "start_time": "2023-05-08T17:19:24.033Z"
   },
   {
    "duration": 650,
    "start_time": "2023-05-08T17:19:24.050Z"
   },
   {
    "duration": 12,
    "start_time": "2023-05-08T17:19:24.702Z"
   },
   {
    "duration": 6,
    "start_time": "2023-05-08T17:19:24.716Z"
   },
   {
    "duration": 6,
    "start_time": "2023-05-08T17:19:24.724Z"
   },
   {
    "duration": 15,
    "start_time": "2023-05-08T17:19:24.732Z"
   },
   {
    "duration": 6,
    "start_time": "2023-05-08T17:19:24.749Z"
   },
   {
    "duration": 198,
    "start_time": "2023-05-08T17:19:24.757Z"
   },
   {
    "duration": 3755,
    "start_time": "2023-05-08T17:19:24.957Z"
   },
   {
    "duration": 174,
    "start_time": "2023-05-08T17:19:28.714Z"
   },
   {
    "duration": 6,
    "start_time": "2023-05-08T17:19:28.890Z"
   },
   {
    "duration": 14,
    "start_time": "2023-05-08T17:19:28.898Z"
   },
   {
    "duration": 383662,
    "start_time": "2023-05-08T17:19:28.915Z"
   },
   {
    "duration": 167,
    "start_time": "2023-05-08T17:25:52.579Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-08T17:25:52.748Z"
   },
   {
    "duration": 977,
    "start_time": "2023-05-08T17:25:52.754Z"
   },
   {
    "duration": 309,
    "start_time": "2023-05-08T17:25:53.733Z"
   },
   {
    "duration": 44,
    "start_time": "2023-05-08T17:25:54.045Z"
   },
   {
    "duration": 27,
    "start_time": "2023-05-08T17:25:54.090Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-08T17:25:54.119Z"
   },
   {
    "duration": 11,
    "start_time": "2023-05-08T17:25:54.126Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-08T17:25:54.141Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-08T17:25:54.147Z"
   },
   {
    "duration": 7,
    "start_time": "2023-05-08T17:25:54.153Z"
   },
   {
    "duration": 68,
    "start_time": "2023-05-08T17:25:54.162Z"
   },
   {
    "duration": 131,
    "start_time": "2023-05-08T17:25:54.232Z"
   },
   {
    "duration": 1584,
    "start_time": "2023-05-09T10:10:36.075Z"
   },
   {
    "duration": 3,
    "start_time": "2023-05-09T10:10:37.663Z"
   },
   {
    "duration": 1035,
    "start_time": "2023-05-09T10:10:37.667Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T10:10:38.705Z"
   },
   {
    "duration": 153,
    "start_time": "2023-05-09T10:10:38.711Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T10:10:38.866Z"
   },
   {
    "duration": 20,
    "start_time": "2023-05-09T10:10:38.884Z"
   },
   {
    "duration": 100,
    "start_time": "2023-05-09T10:10:38.906Z"
   },
   {
    "duration": 31,
    "start_time": "2023-05-09T10:10:39.008Z"
   },
   {
    "duration": 244,
    "start_time": "2023-05-09T10:10:39.041Z"
   },
   {
    "duration": 96,
    "start_time": "2023-05-09T10:10:39.287Z"
   },
   {
    "duration": 37,
    "start_time": "2023-05-09T10:10:39.385Z"
   },
   {
    "duration": 9,
    "start_time": "2023-05-09T10:10:39.425Z"
   },
   {
    "duration": 15,
    "start_time": "2023-05-09T10:10:39.439Z"
   },
   {
    "duration": 314,
    "start_time": "2023-05-09T10:10:44.982Z"
   },
   {
    "duration": 105,
    "start_time": "2023-05-09T10:11:38.545Z"
   },
   {
    "duration": 194,
    "start_time": "2023-05-09T10:12:13.931Z"
   },
   {
    "duration": 355,
    "start_time": "2023-05-09T10:13:09.851Z"
   },
   {
    "duration": 290,
    "start_time": "2023-05-09T10:13:31.897Z"
   },
   {
    "duration": 248,
    "start_time": "2023-05-09T10:14:35.404Z"
   },
   {
    "duration": 221,
    "start_time": "2023-05-09T10:17:41.072Z"
   },
   {
    "duration": 297,
    "start_time": "2023-05-09T10:17:49.754Z"
   },
   {
    "duration": 250,
    "start_time": "2023-05-09T10:19:39.213Z"
   },
   {
    "duration": 370,
    "start_time": "2023-05-09T10:20:10.780Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-09T10:20:29.832Z"
   },
   {
    "duration": 14,
    "start_time": "2023-05-09T10:20:29.839Z"
   },
   {
    "duration": 1086,
    "start_time": "2023-05-09T10:20:29.854Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T10:20:30.941Z"
   },
   {
    "duration": 189,
    "start_time": "2023-05-09T10:20:30.948Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T10:20:31.139Z"
   },
   {
    "duration": 37,
    "start_time": "2023-05-09T10:20:31.145Z"
   },
   {
    "duration": 88,
    "start_time": "2023-05-09T10:20:31.184Z"
   },
   {
    "duration": 31,
    "start_time": "2023-05-09T10:20:31.274Z"
   },
   {
    "duration": 244,
    "start_time": "2023-05-09T10:20:31.308Z"
   },
   {
    "duration": 107,
    "start_time": "2023-05-09T10:20:31.555Z"
   },
   {
    "duration": 62,
    "start_time": "2023-05-09T10:20:31.685Z"
   },
   {
    "duration": 34,
    "start_time": "2023-05-09T10:20:31.750Z"
   },
   {
    "duration": 41,
    "start_time": "2023-05-09T10:20:31.788Z"
   },
   {
    "duration": 230,
    "start_time": "2023-05-09T10:20:32.843Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-09T10:20:37.494Z"
   },
   {
    "duration": 30,
    "start_time": "2023-05-09T10:20:37.502Z"
   },
   {
    "duration": 641,
    "start_time": "2023-05-09T10:20:37.534Z"
   },
   {
    "duration": 3,
    "start_time": "2023-05-09T10:20:38.183Z"
   },
   {
    "duration": 156,
    "start_time": "2023-05-09T10:20:38.188Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-09T10:20:38.347Z"
   },
   {
    "duration": 15,
    "start_time": "2023-05-09T10:20:38.353Z"
   },
   {
    "duration": 62,
    "start_time": "2023-05-09T10:20:38.369Z"
   },
   {
    "duration": 63,
    "start_time": "2023-05-09T10:20:38.433Z"
   },
   {
    "duration": 198,
    "start_time": "2023-05-09T10:20:38.499Z"
   },
   {
    "duration": 109,
    "start_time": "2023-05-09T10:20:38.699Z"
   },
   {
    "duration": 74,
    "start_time": "2023-05-09T10:20:38.810Z"
   },
   {
    "duration": 8,
    "start_time": "2023-05-09T10:20:38.886Z"
   },
   {
    "duration": 15,
    "start_time": "2023-05-09T10:20:38.896Z"
   },
   {
    "duration": 288,
    "start_time": "2023-05-09T10:20:41.736Z"
   },
   {
    "duration": 15,
    "start_time": "2023-05-09T10:22:05.766Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T10:23:14.142Z"
   },
   {
    "duration": 14,
    "start_time": "2023-05-09T10:23:17.788Z"
   },
   {
    "duration": 359,
    "start_time": "2023-05-09T10:24:33.737Z"
   },
   {
    "duration": 336,
    "start_time": "2023-05-09T10:27:10.641Z"
   },
   {
    "duration": 6,
    "start_time": "2023-05-09T10:27:48.708Z"
   },
   {
    "duration": 16,
    "start_time": "2023-05-09T10:27:55.350Z"
   },
   {
    "duration": 198,
    "start_time": "2023-05-09T10:27:57.189Z"
   },
   {
    "duration": 200,
    "start_time": "2023-05-09T10:36:40.669Z"
   },
   {
    "duration": 6,
    "start_time": "2023-05-09T10:38:11.350Z"
   },
   {
    "duration": 9,
    "start_time": "2023-05-09T10:38:11.358Z"
   },
   {
    "duration": 753,
    "start_time": "2023-05-09T10:38:11.369Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T10:38:12.123Z"
   },
   {
    "duration": 140,
    "start_time": "2023-05-09T10:38:12.131Z"
   },
   {
    "duration": 3,
    "start_time": "2023-05-09T10:38:12.283Z"
   },
   {
    "duration": 6,
    "start_time": "2023-05-09T10:38:12.288Z"
   },
   {
    "duration": 54,
    "start_time": "2023-05-09T10:38:12.296Z"
   },
   {
    "duration": 47,
    "start_time": "2023-05-09T10:38:12.352Z"
   },
   {
    "duration": 183,
    "start_time": "2023-05-09T10:38:12.400Z"
   },
   {
    "duration": 56,
    "start_time": "2023-05-09T10:38:12.585Z"
   },
   {
    "duration": 68,
    "start_time": "2023-05-09T10:38:12.643Z"
   },
   {
    "duration": 10,
    "start_time": "2023-05-09T10:38:12.715Z"
   },
   {
    "duration": 9,
    "start_time": "2023-05-09T10:38:12.728Z"
   },
   {
    "duration": 19,
    "start_time": "2023-05-09T10:38:12.739Z"
   },
   {
    "duration": 203,
    "start_time": "2023-05-09T10:38:14.205Z"
   },
   {
    "duration": 6,
    "start_time": "2023-05-09T10:55:00.072Z"
   },
   {
    "duration": 37,
    "start_time": "2023-05-09T10:55:00.080Z"
   },
   {
    "duration": 854,
    "start_time": "2023-05-09T10:55:00.120Z"
   },
   {
    "duration": 3,
    "start_time": "2023-05-09T10:55:00.976Z"
   },
   {
    "duration": 182,
    "start_time": "2023-05-09T10:55:00.984Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T10:55:01.168Z"
   },
   {
    "duration": 18,
    "start_time": "2023-05-09T10:55:01.185Z"
   },
   {
    "duration": 69,
    "start_time": "2023-05-09T10:55:01.205Z"
   },
   {
    "duration": 21,
    "start_time": "2023-05-09T10:55:03.135Z"
   },
   {
    "duration": 12,
    "start_time": "2023-05-09T11:15:01.140Z"
   },
   {
    "duration": 905,
    "start_time": "2023-05-09T11:15:08.353Z"
   },
   {
    "duration": 836,
    "start_time": "2023-05-09T11:19:35.849Z"
   },
   {
    "duration": 973,
    "start_time": "2023-05-09T11:20:18.299Z"
   },
   {
    "duration": 67,
    "start_time": "2023-05-09T11:30:46.692Z"
   },
   {
    "duration": 6,
    "start_time": "2023-05-09T11:36:53.301Z"
   },
   {
    "duration": 226,
    "start_time": "2023-05-09T11:40:23.841Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-09T11:41:40.810Z"
   },
   {
    "duration": 18,
    "start_time": "2023-05-09T11:41:40.817Z"
   },
   {
    "duration": 761,
    "start_time": "2023-05-09T11:41:40.837Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T11:41:41.601Z"
   },
   {
    "duration": 145,
    "start_time": "2023-05-09T11:41:41.607Z"
   },
   {
    "duration": 3,
    "start_time": "2023-05-09T11:41:41.754Z"
   },
   {
    "duration": 21,
    "start_time": "2023-05-09T11:41:41.759Z"
   },
   {
    "duration": 55,
    "start_time": "2023-05-09T11:41:41.784Z"
   },
   {
    "duration": 19,
    "start_time": "2023-05-09T11:41:41.841Z"
   },
   {
    "duration": 997,
    "start_time": "2023-05-09T11:41:41.862Z"
   },
   {
    "duration": 174,
    "start_time": "2023-05-09T11:41:42.861Z"
   },
   {
    "duration": 70,
    "start_time": "2023-05-09T11:41:43.037Z"
   },
   {
    "duration": 34,
    "start_time": "2023-05-09T11:41:43.108Z"
   },
   {
    "duration": 59,
    "start_time": "2023-05-09T11:41:43.144Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-09T11:41:43.205Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-09T11:41:43.206Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-09T11:41:43.207Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-09T11:41:43.208Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-09T11:41:43.210Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-09T11:41:43.211Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-09T11:41:43.212Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-09T11:41:43.213Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-09T11:41:43.214Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-09T11:41:43.215Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-09T11:41:43.216Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-09T11:41:43.217Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-09T11:41:43.218Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-09T11:41:43.219Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-09T11:41:43.220Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-09T11:41:43.221Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-09T11:41:43.222Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-09T11:41:43.223Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-09T11:41:43.224Z"
   },
   {
    "duration": 15,
    "start_time": "2023-05-09T11:41:46.001Z"
   },
   {
    "duration": 11,
    "start_time": "2023-05-09T11:42:30.637Z"
   },
   {
    "duration": 31,
    "start_time": "2023-05-09T11:42:37.116Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-09T11:42:47.098Z"
   },
   {
    "duration": 7,
    "start_time": "2023-05-09T11:42:47.105Z"
   },
   {
    "duration": 499,
    "start_time": "2023-05-09T11:42:47.113Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T11:42:47.614Z"
   },
   {
    "duration": 127,
    "start_time": "2023-05-09T11:42:47.620Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T11:42:47.749Z"
   },
   {
    "duration": 16,
    "start_time": "2023-05-09T11:42:47.754Z"
   },
   {
    "duration": 60,
    "start_time": "2023-05-09T11:42:47.772Z"
   },
   {
    "duration": 19,
    "start_time": "2023-05-09T11:42:47.833Z"
   },
   {
    "duration": 928,
    "start_time": "2023-05-09T11:42:47.855Z"
   },
   {
    "duration": 313,
    "start_time": "2023-05-09T11:42:48.785Z"
   },
   {
    "duration": 100,
    "start_time": "2023-05-09T11:42:49.100Z"
   },
   {
    "duration": 39,
    "start_time": "2023-05-09T11:42:49.202Z"
   },
   {
    "duration": 954,
    "start_time": "2023-05-09T11:42:49.244Z"
   },
   {
    "duration": 9,
    "start_time": "2023-05-09T11:42:50.199Z"
   },
   {
    "duration": 35,
    "start_time": "2023-05-09T11:42:50.209Z"
   },
   {
    "duration": 242,
    "start_time": "2023-05-09T11:42:50.245Z"
   },
   {
    "duration": 289,
    "start_time": "2023-05-09T11:42:50.488Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T11:42:50.783Z"
   },
   {
    "duration": 12,
    "start_time": "2023-05-09T11:42:50.789Z"
   },
   {
    "duration": 37,
    "start_time": "2023-05-09T11:42:50.803Z"
   },
   {
    "duration": 15,
    "start_time": "2023-05-09T11:42:50.842Z"
   },
   {
    "duration": 520,
    "start_time": "2023-05-09T11:42:50.858Z"
   },
   {
    "duration": 7,
    "start_time": "2023-05-09T11:42:51.379Z"
   },
   {
    "duration": 14,
    "start_time": "2023-05-09T11:42:51.387Z"
   },
   {
    "duration": 9,
    "start_time": "2023-05-09T11:42:51.402Z"
   },
   {
    "duration": 16,
    "start_time": "2023-05-09T11:42:51.412Z"
   },
   {
    "duration": 6,
    "start_time": "2023-05-09T11:42:51.431Z"
   },
   {
    "duration": 144,
    "start_time": "2023-05-09T11:42:51.439Z"
   },
   {
    "duration": 7,
    "start_time": "2023-05-09T11:42:51.584Z"
   },
   {
    "duration": 48,
    "start_time": "2023-05-09T11:42:51.592Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-09T11:42:51.642Z"
   },
   {
    "duration": 3566,
    "start_time": "2023-05-09T11:42:52.664Z"
   },
   {
    "duration": 140,
    "start_time": "2023-05-09T11:43:00.277Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T11:43:01.960Z"
   },
   {
    "duration": 15,
    "start_time": "2023-05-09T12:01:30.083Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-09T12:01:47.799Z"
   },
   {
    "duration": 8283,
    "start_time": "2023-05-09T12:01:54.401Z"
   },
   {
    "duration": 7,
    "start_time": "2023-05-09T12:02:02.686Z"
   },
   {
    "duration": 41,
    "start_time": "2023-05-09T12:02:02.695Z"
   },
   {
    "duration": 844,
    "start_time": "2023-05-09T12:02:02.739Z"
   },
   {
    "duration": 3,
    "start_time": "2023-05-09T12:02:03.585Z"
   },
   {
    "duration": 154,
    "start_time": "2023-05-09T12:02:03.590Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-09T12:02:03.747Z"
   },
   {
    "duration": 9,
    "start_time": "2023-05-09T12:02:03.754Z"
   },
   {
    "duration": 70,
    "start_time": "2023-05-09T12:02:03.765Z"
   },
   {
    "duration": 47,
    "start_time": "2023-05-09T12:02:03.838Z"
   },
   {
    "duration": 930,
    "start_time": "2023-05-09T12:02:03.887Z"
   },
   {
    "duration": 220,
    "start_time": "2023-05-09T12:02:04.820Z"
   },
   {
    "duration": 91,
    "start_time": "2023-05-09T12:02:05.042Z"
   },
   {
    "duration": 79,
    "start_time": "2023-05-09T12:02:05.135Z"
   },
   {
    "duration": 1176,
    "start_time": "2023-05-09T12:02:05.216Z"
   },
   {
    "duration": 11,
    "start_time": "2023-05-09T12:02:06.394Z"
   },
   {
    "duration": 13,
    "start_time": "2023-05-09T12:02:06.407Z"
   },
   {
    "duration": 272,
    "start_time": "2023-05-09T12:02:06.422Z"
   },
   {
    "duration": 326,
    "start_time": "2023-05-09T12:02:06.696Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T12:02:07.024Z"
   },
   {
    "duration": 18,
    "start_time": "2023-05-09T12:02:07.030Z"
   },
   {
    "duration": 40,
    "start_time": "2023-05-09T12:02:07.051Z"
   },
   {
    "duration": 31,
    "start_time": "2023-05-09T12:02:07.093Z"
   },
   {
    "duration": 642,
    "start_time": "2023-05-09T12:02:07.126Z"
   },
   {
    "duration": 12,
    "start_time": "2023-05-09T12:02:07.771Z"
   },
   {
    "duration": 10,
    "start_time": "2023-05-09T12:02:07.786Z"
   },
   {
    "duration": 29,
    "start_time": "2023-05-09T12:02:07.798Z"
   },
   {
    "duration": 9,
    "start_time": "2023-05-09T12:02:07.830Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-09T12:02:07.841Z"
   },
   {
    "duration": 150,
    "start_time": "2023-05-09T12:02:07.848Z"
   },
   {
    "duration": 6,
    "start_time": "2023-05-09T12:02:08.000Z"
   },
   {
    "duration": 44,
    "start_time": "2023-05-09T12:02:08.007Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-09T12:02:08.052Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-09T12:02:08.054Z"
   },
   {
    "duration": 31339,
    "start_time": "2023-05-09T12:02:14.697Z"
   },
   {
    "duration": 3,
    "start_time": "2023-05-09T12:06:23.763Z"
   },
   {
    "duration": 59524,
    "start_time": "2023-05-09T12:06:24.851Z"
   },
   {
    "duration": 6,
    "start_time": "2023-05-09T12:07:40.767Z"
   },
   {
    "duration": 17,
    "start_time": "2023-05-09T12:07:40.777Z"
   },
   {
    "duration": 631,
    "start_time": "2023-05-09T12:07:40.796Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T12:07:41.429Z"
   },
   {
    "duration": 187,
    "start_time": "2023-05-09T12:07:41.435Z"
   },
   {
    "duration": 3,
    "start_time": "2023-05-09T12:07:41.624Z"
   },
   {
    "duration": 12,
    "start_time": "2023-05-09T12:07:41.629Z"
   },
   {
    "duration": 70,
    "start_time": "2023-05-09T12:07:41.642Z"
   },
   {
    "duration": 27,
    "start_time": "2023-05-09T12:07:41.715Z"
   },
   {
    "duration": 1102,
    "start_time": "2023-05-09T12:07:41.746Z"
   },
   {
    "duration": 234,
    "start_time": "2023-05-09T12:07:42.849Z"
   },
   {
    "duration": 103,
    "start_time": "2023-05-09T12:07:43.085Z"
   },
   {
    "duration": 54,
    "start_time": "2023-05-09T12:07:43.191Z"
   },
   {
    "duration": 1220,
    "start_time": "2023-05-09T12:07:43.247Z"
   },
   {
    "duration": 22,
    "start_time": "2023-05-09T12:07:44.469Z"
   },
   {
    "duration": 17,
    "start_time": "2023-05-09T12:07:44.494Z"
   },
   {
    "duration": 296,
    "start_time": "2023-05-09T12:07:44.514Z"
   },
   {
    "duration": 332,
    "start_time": "2023-05-09T12:07:44.812Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-09T12:07:45.146Z"
   },
   {
    "duration": 13,
    "start_time": "2023-05-09T12:07:45.154Z"
   },
   {
    "duration": 34,
    "start_time": "2023-05-09T12:07:45.184Z"
   },
   {
    "duration": 33,
    "start_time": "2023-05-09T12:07:45.222Z"
   },
   {
    "duration": 641,
    "start_time": "2023-05-09T12:07:45.258Z"
   },
   {
    "duration": 6,
    "start_time": "2023-05-09T12:07:45.901Z"
   },
   {
    "duration": 20,
    "start_time": "2023-05-09T12:07:45.909Z"
   },
   {
    "duration": 13,
    "start_time": "2023-05-09T12:07:45.931Z"
   },
   {
    "duration": 13,
    "start_time": "2023-05-09T12:07:45.946Z"
   },
   {
    "duration": 24,
    "start_time": "2023-05-09T12:07:45.963Z"
   },
   {
    "duration": 163,
    "start_time": "2023-05-09T12:07:45.989Z"
   },
   {
    "duration": 6,
    "start_time": "2023-05-09T12:07:46.154Z"
   },
   {
    "duration": 57,
    "start_time": "2023-05-09T12:07:46.162Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-09T12:07:46.220Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-09T12:07:46.222Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-09T12:07:46.223Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-09T12:07:46.225Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-09T12:07:46.227Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-09T12:07:46.228Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-09T12:07:46.230Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-09T12:08:11.552Z"
   },
   {
    "duration": 27,
    "start_time": "2023-05-09T12:08:11.560Z"
   },
   {
    "duration": 781,
    "start_time": "2023-05-09T12:08:11.589Z"
   },
   {
    "duration": 11,
    "start_time": "2023-05-09T12:08:12.372Z"
   },
   {
    "duration": 186,
    "start_time": "2023-05-09T12:08:12.385Z"
   },
   {
    "duration": 13,
    "start_time": "2023-05-09T12:08:12.572Z"
   },
   {
    "duration": 30,
    "start_time": "2023-05-09T12:08:12.588Z"
   },
   {
    "duration": 96,
    "start_time": "2023-05-09T12:08:12.620Z"
   },
   {
    "duration": 25,
    "start_time": "2023-05-09T12:08:12.718Z"
   },
   {
    "duration": 1003,
    "start_time": "2023-05-09T12:08:12.745Z"
   },
   {
    "duration": 223,
    "start_time": "2023-05-09T12:08:13.751Z"
   },
   {
    "duration": 63,
    "start_time": "2023-05-09T12:08:13.983Z"
   },
   {
    "duration": 34,
    "start_time": "2023-05-09T12:08:14.084Z"
   },
   {
    "duration": 1042,
    "start_time": "2023-05-09T12:08:14.121Z"
   },
   {
    "duration": 19,
    "start_time": "2023-05-09T12:08:15.165Z"
   },
   {
    "duration": 26,
    "start_time": "2023-05-09T12:08:15.186Z"
   },
   {
    "duration": 249,
    "start_time": "2023-05-09T12:08:15.215Z"
   },
   {
    "duration": 314,
    "start_time": "2023-05-09T12:08:15.466Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T12:08:15.783Z"
   },
   {
    "duration": 11,
    "start_time": "2023-05-09T12:08:15.789Z"
   },
   {
    "duration": 26,
    "start_time": "2023-05-09T12:08:15.802Z"
   },
   {
    "duration": 17,
    "start_time": "2023-05-09T12:08:15.829Z"
   },
   {
    "duration": 586,
    "start_time": "2023-05-09T12:08:15.849Z"
   },
   {
    "duration": 7,
    "start_time": "2023-05-09T12:08:16.437Z"
   },
   {
    "duration": 51,
    "start_time": "2023-05-09T12:08:16.445Z"
   },
   {
    "duration": 23,
    "start_time": "2023-05-09T12:08:16.499Z"
   },
   {
    "duration": 25,
    "start_time": "2023-05-09T12:08:16.524Z"
   },
   {
    "duration": 12,
    "start_time": "2023-05-09T12:08:16.552Z"
   },
   {
    "duration": 196,
    "start_time": "2023-05-09T12:08:16.566Z"
   },
   {
    "duration": 7,
    "start_time": "2023-05-09T12:08:16.764Z"
   },
   {
    "duration": 152,
    "start_time": "2023-05-09T12:08:16.784Z"
   },
   {
    "duration": 3,
    "start_time": "2023-05-09T12:08:16.937Z"
   },
   {
    "duration": 14935,
    "start_time": "2023-05-09T12:08:16.942Z"
   },
   {
    "duration": 8,
    "start_time": "2023-05-09T12:08:31.878Z"
   },
   {
    "duration": 11,
    "start_time": "2023-05-09T12:08:31.888Z"
   },
   {
    "duration": 208642,
    "start_time": "2023-05-09T12:08:31.901Z"
   },
   {
    "duration": 3,
    "start_time": "2023-05-09T12:12:00.545Z"
   },
   {
    "duration": 14995,
    "start_time": "2023-05-09T12:23:32.563Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-09T12:23:49.911Z"
   },
   {
    "duration": 12,
    "start_time": "2023-05-09T12:24:04.813Z"
   },
   {
    "duration": 51,
    "start_time": "2023-05-09T12:24:04.828Z"
   },
   {
    "duration": 1411,
    "start_time": "2023-05-09T12:24:04.882Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T12:24:06.295Z"
   },
   {
    "duration": 190,
    "start_time": "2023-05-09T12:24:06.301Z"
   },
   {
    "duration": 6,
    "start_time": "2023-05-09T12:24:06.494Z"
   },
   {
    "duration": 20,
    "start_time": "2023-05-09T12:24:06.502Z"
   },
   {
    "duration": 72,
    "start_time": "2023-05-09T12:24:06.524Z"
   },
   {
    "duration": 32,
    "start_time": "2023-05-09T12:24:06.599Z"
   },
   {
    "duration": 1084,
    "start_time": "2023-05-09T12:24:06.633Z"
   },
   {
    "duration": 433,
    "start_time": "2023-05-09T12:24:07.721Z"
   },
   {
    "duration": 137,
    "start_time": "2023-05-09T12:24:08.157Z"
   },
   {
    "duration": 40,
    "start_time": "2023-05-09T12:24:08.299Z"
   },
   {
    "duration": 1109,
    "start_time": "2023-05-09T12:24:08.341Z"
   },
   {
    "duration": 11,
    "start_time": "2023-05-09T12:24:09.453Z"
   },
   {
    "duration": 21,
    "start_time": "2023-05-09T12:24:09.467Z"
   },
   {
    "duration": 360,
    "start_time": "2023-05-09T12:24:09.491Z"
   },
   {
    "duration": 361,
    "start_time": "2023-05-09T12:24:09.855Z"
   },
   {
    "duration": 8,
    "start_time": "2023-05-09T12:24:10.219Z"
   },
   {
    "duration": 41,
    "start_time": "2023-05-09T12:24:10.229Z"
   },
   {
    "duration": 77,
    "start_time": "2023-05-09T12:24:10.273Z"
   },
   {
    "duration": 43,
    "start_time": "2023-05-09T12:24:10.352Z"
   },
   {
    "duration": 727,
    "start_time": "2023-05-09T12:24:10.396Z"
   },
   {
    "duration": 7,
    "start_time": "2023-05-09T12:24:11.125Z"
   },
   {
    "duration": 21,
    "start_time": "2023-05-09T12:24:11.134Z"
   },
   {
    "duration": 6,
    "start_time": "2023-05-09T12:24:11.158Z"
   },
   {
    "duration": 12,
    "start_time": "2023-05-09T12:24:11.187Z"
   },
   {
    "duration": 23,
    "start_time": "2023-05-09T12:24:11.201Z"
   },
   {
    "duration": 185,
    "start_time": "2023-05-09T12:24:11.227Z"
   },
   {
    "duration": 8,
    "start_time": "2023-05-09T12:24:11.418Z"
   },
   {
    "duration": 216,
    "start_time": "2023-05-09T12:24:11.429Z"
   },
   {
    "duration": 3,
    "start_time": "2023-05-09T12:24:11.647Z"
   },
   {
    "duration": 16104,
    "start_time": "2023-05-09T12:24:11.652Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T12:24:27.758Z"
   },
   {
    "duration": 41,
    "start_time": "2023-05-09T12:24:27.764Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T12:24:31.347Z"
   },
   {
    "duration": 217453,
    "start_time": "2023-05-09T12:24:32.581Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T12:28:10.036Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-09T12:30:42.758Z"
   },
   {
    "duration": 3,
    "start_time": "2023-05-09T12:43:07.377Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-09T12:43:16.997Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T12:43:52.513Z"
   },
   {
    "duration": 1491774,
    "start_time": "2023-05-09T12:44:38.062Z"
   },
   {
    "duration": 8,
    "start_time": "2023-05-09T13:09:29.838Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-09T13:09:33.289Z"
   },
   {
    "duration": 3111,
    "start_time": "2023-05-09T13:10:44.505Z"
   },
   {
    "duration": 3385,
    "start_time": "2023-05-09T13:10:51.302Z"
   },
   {
    "duration": 3238,
    "start_time": "2023-05-09T13:17:40.161Z"
   },
   {
    "duration": 21,
    "start_time": "2023-05-09T13:17:43.494Z"
   },
   {
    "duration": 13,
    "start_time": "2023-05-09T13:17:46.390Z"
   },
   {
    "duration": 11,
    "start_time": "2023-05-09T13:19:10.802Z"
   },
   {
    "duration": 106,
    "start_time": "2023-05-09T13:19:29.766Z"
   },
   {
    "duration": 38,
    "start_time": "2023-05-09T13:19:31.301Z"
   },
   {
    "duration": 11,
    "start_time": "2023-05-09T13:19:34.445Z"
   },
   {
    "duration": 6,
    "start_time": "2023-05-09T13:19:36.256Z"
   },
   {
    "duration": 6,
    "start_time": "2023-05-09T13:19:37.643Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T13:19:39.131Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-09T13:19:40.715Z"
   },
   {
    "duration": 3,
    "start_time": "2023-05-09T13:22:01.051Z"
   },
   {
    "duration": 80,
    "start_time": "2023-05-09T13:22:08.301Z"
   },
   {
    "duration": 57,
    "start_time": "2023-05-09T13:22:09.690Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T13:23:31.376Z"
   },
   {
    "duration": 159,
    "start_time": "2023-05-09T13:40:01.251Z"
   },
   {
    "duration": 11,
    "start_time": "2023-05-09T13:40:40.244Z"
   },
   {
    "duration": 16,
    "start_time": "2023-05-09T13:40:47.712Z"
   },
   {
    "duration": 13,
    "start_time": "2023-05-09T13:41:09.931Z"
   },
   {
    "duration": 3,
    "start_time": "2023-05-09T13:43:33.907Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-09T13:43:35.304Z"
   },
   {
    "duration": 23,
    "start_time": "2023-05-09T13:44:06.675Z"
   },
   {
    "duration": 21,
    "start_time": "2023-05-09T13:44:07.873Z"
   },
   {
    "duration": 613,
    "start_time": "2023-05-09T13:44:09.073Z"
   },
   {
    "duration": 7,
    "start_time": "2023-05-09T13:44:10.305Z"
   },
   {
    "duration": 7,
    "start_time": "2023-05-09T13:44:11.466Z"
   },
   {
    "duration": 8,
    "start_time": "2023-05-09T13:44:12.691Z"
   },
   {
    "duration": 10,
    "start_time": "2023-05-09T13:44:13.875Z"
   },
   {
    "duration": 7,
    "start_time": "2023-05-09T13:44:15.173Z"
   },
   {
    "duration": 3,
    "start_time": "2023-05-09T13:45:29.300Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T13:45:30.545Z"
   },
   {
    "duration": 7,
    "start_time": "2023-05-09T13:45:34.081Z"
   },
   {
    "duration": 6,
    "start_time": "2023-05-09T13:45:35.259Z"
   },
   {
    "duration": 3,
    "start_time": "2023-05-09T13:45:36.552Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T13:45:37.710Z"
   },
   {
    "duration": 10,
    "start_time": "2023-05-09T13:45:39.952Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-09T13:45:41.222Z"
   },
   {
    "duration": 6,
    "start_time": "2023-05-09T13:45:42.529Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T13:45:43.644Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T13:45:44.745Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T13:45:45.960Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T13:45:47.939Z"
   },
   {
    "duration": 44,
    "start_time": "2023-05-09T13:49:14.978Z"
   },
   {
    "duration": 11,
    "start_time": "2023-05-09T13:49:16.908Z"
   },
   {
    "duration": 6,
    "start_time": "2023-05-09T13:49:18.807Z"
   },
   {
    "duration": 8,
    "start_time": "2023-05-09T13:49:19.980Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T13:49:25.347Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T13:49:26.534Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-09T13:49:27.575Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T13:49:29.938Z"
   },
   {
    "duration": 2027,
    "start_time": "2023-05-09T13:49:50.855Z"
   },
   {
    "duration": 22,
    "start_time": "2023-05-09T13:49:52.884Z"
   },
   {
    "duration": 155,
    "start_time": "2023-05-09T13:49:53.067Z"
   },
   {
    "duration": 30,
    "start_time": "2023-05-09T13:49:55.909Z"
   },
   {
    "duration": 351,
    "start_time": "2023-05-09T13:50:36.252Z"
   },
   {
    "duration": 15,
    "start_time": "2023-05-09T13:50:37.873Z"
   },
   {
    "duration": 169,
    "start_time": "2023-05-09T13:50:40.745Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-09T13:52:49.001Z"
   },
   {
    "duration": 17,
    "start_time": "2023-05-09T13:52:49.014Z"
   },
   {
    "duration": 975,
    "start_time": "2023-05-09T13:52:49.033Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T13:52:50.010Z"
   },
   {
    "duration": 181,
    "start_time": "2023-05-09T13:52:50.016Z"
   },
   {
    "duration": 6,
    "start_time": "2023-05-09T13:52:50.200Z"
   },
   {
    "duration": 12,
    "start_time": "2023-05-09T13:52:50.208Z"
   },
   {
    "duration": 82,
    "start_time": "2023-05-09T13:52:50.222Z"
   },
   {
    "duration": 21,
    "start_time": "2023-05-09T13:52:50.305Z"
   },
   {
    "duration": 1053,
    "start_time": "2023-05-09T13:52:50.328Z"
   },
   {
    "duration": 222,
    "start_time": "2023-05-09T13:52:51.383Z"
   },
   {
    "duration": 105,
    "start_time": "2023-05-09T13:52:51.610Z"
   },
   {
    "duration": 77,
    "start_time": "2023-05-09T13:52:51.718Z"
   },
   {
    "duration": 1430,
    "start_time": "2023-05-09T13:52:51.797Z"
   },
   {
    "duration": 11,
    "start_time": "2023-05-09T13:52:53.232Z"
   },
   {
    "duration": 33,
    "start_time": "2023-05-09T13:52:53.246Z"
   },
   {
    "duration": 443,
    "start_time": "2023-05-09T13:52:53.282Z"
   },
   {
    "duration": 409,
    "start_time": "2023-05-09T13:52:53.727Z"
   },
   {
    "duration": 7,
    "start_time": "2023-05-09T13:52:54.138Z"
   },
   {
    "duration": 12,
    "start_time": "2023-05-09T13:52:54.147Z"
   },
   {
    "duration": 33,
    "start_time": "2023-05-09T13:52:54.161Z"
   },
   {
    "duration": 29,
    "start_time": "2023-05-09T13:52:54.202Z"
   },
   {
    "duration": 750,
    "start_time": "2023-05-09T13:52:54.234Z"
   },
   {
    "duration": 7,
    "start_time": "2023-05-09T13:52:54.986Z"
   },
   {
    "duration": 40,
    "start_time": "2023-05-09T13:52:54.995Z"
   },
   {
    "duration": 39,
    "start_time": "2023-05-09T13:52:55.037Z"
   },
   {
    "duration": 50,
    "start_time": "2023-05-09T13:52:55.079Z"
   },
   {
    "duration": 32,
    "start_time": "2023-05-09T13:52:55.131Z"
   },
   {
    "duration": 13,
    "start_time": "2023-05-09T13:52:55.165Z"
   },
   {
    "duration": 194,
    "start_time": "2023-05-09T13:52:55.180Z"
   },
   {
    "duration": 13,
    "start_time": "2023-05-09T13:52:55.388Z"
   },
   {
    "duration": 190,
    "start_time": "2023-05-09T13:52:55.402Z"
   },
   {
    "duration": 15439,
    "start_time": "2023-05-09T13:52:55.593Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-09T13:53:11.033Z"
   },
   {
    "duration": 9,
    "start_time": "2023-05-09T13:53:11.039Z"
   },
   {
    "duration": 1430188,
    "start_time": "2023-05-09T13:53:11.050Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T14:17:01.240Z"
   },
   {
    "duration": 3048,
    "start_time": "2023-05-09T14:17:01.245Z"
   },
   {
    "duration": 8,
    "start_time": "2023-05-09T14:17:04.295Z"
   },
   {
    "duration": 184,
    "start_time": "2023-05-09T14:17:04.305Z"
   },
   {
    "duration": 15,
    "start_time": "2023-05-09T14:17:04.494Z"
   },
   {
    "duration": 151,
    "start_time": "2023-05-09T14:17:04.514Z"
   },
   {
    "duration": 42,
    "start_time": "2023-05-09T14:17:04.666Z"
   },
   {
    "duration": 13,
    "start_time": "2023-05-09T14:17:04.710Z"
   },
   {
    "duration": 40,
    "start_time": "2023-05-09T14:17:04.725Z"
   },
   {
    "duration": 44,
    "start_time": "2023-05-09T14:17:04.767Z"
   },
   {
    "duration": 26,
    "start_time": "2023-05-09T14:17:04.814Z"
   },
   {
    "duration": 37,
    "start_time": "2023-05-09T14:17:04.841Z"
   },
   {
    "duration": 39,
    "start_time": "2023-05-09T14:17:04.881Z"
   },
   {
    "duration": 39,
    "start_time": "2023-05-09T14:17:04.922Z"
   },
   {
    "duration": 397,
    "start_time": "2023-05-09T14:17:04.963Z"
   },
   {
    "duration": 11,
    "start_time": "2023-05-09T14:17:05.361Z"
   },
   {
    "duration": 184,
    "start_time": "2023-05-09T14:17:05.373Z"
   },
   {
    "duration": 3383,
    "start_time": "2023-05-09T14:17:22.215Z"
   },
   {
    "duration": 88,
    "start_time": "2023-05-09T14:17:25.603Z"
   },
   {
    "duration": 178,
    "start_time": "2023-05-09T14:17:57.998Z"
   },
   {
    "duration": 12,
    "start_time": "2023-05-09T14:17:59.595Z"
   },
   {
    "duration": 148,
    "start_time": "2023-05-09T14:18:01.601Z"
   },
   {
    "duration": 814,
    "start_time": "2023-05-09T14:18:35.147Z"
   },
   {
    "duration": 12,
    "start_time": "2023-05-09T14:18:36.609Z"
   },
   {
    "duration": 167,
    "start_time": "2023-05-09T14:18:38.112Z"
   },
   {
    "duration": 179,
    "start_time": "2023-05-09T14:19:06.177Z"
   },
   {
    "duration": 12,
    "start_time": "2023-05-09T14:19:07.897Z"
   },
   {
    "duration": 148,
    "start_time": "2023-05-09T14:19:09.181Z"
   },
   {
    "duration": 34,
    "start_time": "2023-05-09T14:19:13.044Z"
   },
   {
    "duration": 8,
    "start_time": "2023-05-09T14:19:17.757Z"
   },
   {
    "duration": 7,
    "start_time": "2023-05-09T14:19:19.702Z"
   },
   {
    "duration": 6,
    "start_time": "2023-05-09T14:19:21.097Z"
   },
   {
    "duration": 2,
    "start_time": "2023-05-09T14:19:22.636Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-09T14:19:23.993Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-09T14:19:25.347Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-09T14:20:45.044Z"
   },
   {
    "duration": 28152,
    "start_time": "2023-05-09T14:27:06.257Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T14:27:43.820Z"
   },
   {
    "duration": 166,
    "start_time": "2023-05-09T14:28:10.140Z"
   },
   {
    "duration": 12,
    "start_time": "2023-05-09T14:28:12.346Z"
   },
   {
    "duration": 145,
    "start_time": "2023-05-09T14:28:14.888Z"
   },
   {
    "duration": 32,
    "start_time": "2023-05-09T14:28:17.733Z"
   },
   {
    "duration": 9,
    "start_time": "2023-05-09T14:28:19.704Z"
   },
   {
    "duration": 6,
    "start_time": "2023-05-09T14:28:21.433Z"
   },
   {
    "duration": 6,
    "start_time": "2023-05-09T14:28:22.840Z"
   },
   {
    "duration": 3,
    "start_time": "2023-05-09T14:28:24.403Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T14:28:25.960Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T14:28:27.339Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T14:28:32.096Z"
   },
   {
    "duration": 20130,
    "start_time": "2023-05-09T14:33:27.710Z"
   },
   {
    "duration": 31398,
    "start_time": "2023-05-09T14:33:53.205Z"
   },
   {
    "duration": 6,
    "start_time": "2023-05-09T14:34:30.356Z"
   },
   {
    "duration": 86,
    "start_time": "2023-05-09T14:34:41.810Z"
   },
   {
    "duration": 12,
    "start_time": "2023-05-09T14:34:43.500Z"
   },
   {
    "duration": 28964,
    "start_time": "2023-05-09T14:35:01.451Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T14:36:16.121Z"
   },
   {
    "duration": 27660,
    "start_time": "2023-05-09T14:36:35.088Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-09T14:37:04.688Z"
   },
   {
    "duration": 152,
    "start_time": "2023-05-09T14:38:13.741Z"
   },
   {
    "duration": 12,
    "start_time": "2023-05-09T14:38:15.508Z"
   },
   {
    "duration": 130,
    "start_time": "2023-05-09T14:38:17.656Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-10T13:21:38.351Z"
   },
   {
    "duration": 2094,
    "start_time": "2023-05-10T13:24:34.735Z"
   },
   {
    "duration": 25,
    "start_time": "2023-05-10T13:32:39.291Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.319Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.320Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.322Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.324Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.325Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.327Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.328Z"
   },
   {
    "duration": 1,
    "start_time": "2023-05-10T13:32:39.329Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.331Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.332Z"
   },
   {
    "duration": 12,
    "start_time": "2023-05-10T13:32:39.335Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.349Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.350Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.352Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.353Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.354Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.355Z"
   },
   {
    "duration": 43,
    "start_time": "2023-05-10T13:32:39.357Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.402Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.404Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.406Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.442Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.443Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.445Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.446Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.447Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.449Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.455Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.462Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.464Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.466Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.468Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.470Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.471Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.473Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.474Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.476Z"
   },
   {
    "duration": 357,
    "start_time": "2023-05-10T13:32:39.480Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.840Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.842Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.844Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:39.845Z"
   },
   {
    "duration": 15,
    "start_time": "2023-05-10T13:32:47.001Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.018Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.019Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.020Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.022Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.023Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.025Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.027Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.028Z"
   },
   {
    "duration": 43,
    "start_time": "2023-05-10T13:32:47.031Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.077Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.078Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.080Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.081Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.083Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.085Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.087Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.088Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.092Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.093Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.095Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.097Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.098Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.099Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.101Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.102Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.104Z"
   },
   {
    "duration": 14,
    "start_time": "2023-05-10T13:32:47.149Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.166Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.167Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.169Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.170Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.171Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.173Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.175Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.176Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.177Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.178Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.180Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.181Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.183Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:32:47.184Z"
   },
   {
    "duration": 16,
    "start_time": "2023-05-10T13:33:24.585Z"
   },
   {
    "duration": 13,
    "start_time": "2023-05-10T13:33:26.585Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:58:35.147Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-10T13:58:35.149Z"
   },
   {
    "duration": 1731,
    "start_time": "2023-05-11T10:45:42.125Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.859Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.861Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.862Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.863Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.864Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.865Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.866Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.867Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.868Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.869Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.870Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.892Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.893Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.894Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.896Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.898Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.899Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.901Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.902Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.903Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.905Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.906Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.907Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.909Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.910Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.911Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.913Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.914Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.915Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.917Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.918Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.920Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.921Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.922Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.924Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.925Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.926Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.927Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.928Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.930Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.932Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.992Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.993Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.995Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.996Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.997Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:43.998Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:44.000Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:44.001Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:44.002Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:44.004Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:44.005Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:44.007Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:44.009Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:44.010Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:44.012Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:44.013Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:44.016Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:44.017Z"
   },
   {
    "duration": 1,
    "start_time": "2023-05-11T10:45:44.018Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:44.020Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:44.022Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:45:44.024Z"
   },
   {
    "duration": 7469,
    "start_time": "2023-05-11T10:56:56.572Z"
   },
   {
    "duration": 1260,
    "start_time": "2023-05-11T10:57:04.044Z"
   },
   {
    "duration": 3,
    "start_time": "2023-05-11T10:57:05.305Z"
   },
   {
    "duration": 959,
    "start_time": "2023-05-11T10:57:05.310Z"
   },
   {
    "duration": 3,
    "start_time": "2023-05-11T10:57:06.271Z"
   },
   {
    "duration": 131,
    "start_time": "2023-05-11T10:57:06.275Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-11T10:57:06.407Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-11T10:57:06.412Z"
   },
   {
    "duration": 75,
    "start_time": "2023-05-11T10:57:06.419Z"
   },
   {
    "duration": 18,
    "start_time": "2023-05-11T10:57:06.498Z"
   },
   {
    "duration": 1145,
    "start_time": "2023-05-11T10:57:06.518Z"
   },
   {
    "duration": 258,
    "start_time": "2023-05-11T10:57:07.665Z"
   },
   {
    "duration": 79,
    "start_time": "2023-05-11T10:57:07.925Z"
   },
   {
    "duration": 31,
    "start_time": "2023-05-11T10:57:08.006Z"
   },
   {
    "duration": 993,
    "start_time": "2023-05-11T10:57:08.038Z"
   },
   {
    "duration": 9,
    "start_time": "2023-05-11T10:57:09.032Z"
   },
   {
    "duration": 388,
    "start_time": "2023-05-11T10:57:09.043Z"
   },
   {
    "duration": 253,
    "start_time": "2023-05-11T10:57:09.433Z"
   },
   {
    "duration": 25,
    "start_time": "2023-05-11T10:57:09.688Z"
   },
   {
    "duration": 377,
    "start_time": "2023-05-11T10:57:09.715Z"
   },
   {
    "duration": 185,
    "start_time": "2023-05-11T10:57:10.094Z"
   },
   {
    "duration": 39,
    "start_time": "2023-05-11T10:57:10.281Z"
   },
   {
    "duration": 76,
    "start_time": "2023-05-11T10:57:10.322Z"
   },
   {
    "duration": 136,
    "start_time": "2023-05-11T10:57:10.400Z"
   },
   {
    "duration": 1349,
    "start_time": "2023-05-11T10:57:10.538Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-11T10:57:11.892Z"
   },
   {
    "duration": 11,
    "start_time": "2023-05-11T10:57:11.898Z"
   },
   {
    "duration": 14,
    "start_time": "2023-05-11T10:57:11.914Z"
   },
   {
    "duration": 14,
    "start_time": "2023-05-11T10:57:11.930Z"
   },
   {
    "duration": 598,
    "start_time": "2023-05-11T10:57:11.946Z"
   },
   {
    "duration": 7,
    "start_time": "2023-05-11T10:57:12.546Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-11T10:57:12.554Z"
   },
   {
    "duration": 3,
    "start_time": "2023-05-11T10:57:12.560Z"
   },
   {
    "duration": 28,
    "start_time": "2023-05-11T10:57:12.565Z"
   },
   {
    "duration": 6,
    "start_time": "2023-05-11T10:57:12.594Z"
   },
   {
    "duration": 6,
    "start_time": "2023-05-11T10:57:12.601Z"
   },
   {
    "duration": 173,
    "start_time": "2023-05-11T10:57:12.609Z"
   },
   {
    "duration": 11,
    "start_time": "2023-05-11T10:57:12.784Z"
   },
   {
    "duration": 161,
    "start_time": "2023-05-11T10:57:12.797Z"
   },
   {
    "duration": 3,
    "start_time": "2023-05-11T10:57:12.959Z"
   },
   {
    "duration": 7874,
    "start_time": "2023-05-11T10:57:12.964Z"
   },
   {
    "duration": 15,
    "start_time": "2023-05-11T10:57:20.840Z"
   },
   {
    "duration": 133,
    "start_time": "2023-05-11T10:57:20.856Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:57:20.991Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:57:20.992Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:57:20.993Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:57:20.995Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:57:20.996Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:57:20.997Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:57:20.998Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:57:20.999Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:57:21.000Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:57:21.001Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:57:21.002Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:57:21.004Z"
   },
   {
    "duration": 1,
    "start_time": "2023-05-11T10:57:21.004Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:57:21.006Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:57:21.007Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:57:21.008Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:57:21.009Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:57:21.010Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:57:21.011Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:57:21.012Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:57:21.013Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-11T10:57:21.014Z"
   },
   {
    "duration": 7453,
    "start_time": "2023-05-11T11:56:58.596Z"
   },
   {
    "duration": 1365,
    "start_time": "2023-05-11T11:57:06.053Z"
   },
   {
    "duration": 3,
    "start_time": "2023-05-11T11:57:07.421Z"
   },
   {
    "duration": 812,
    "start_time": "2023-05-11T11:57:07.426Z"
   },
   {
    "duration": 3,
    "start_time": "2023-05-11T11:57:08.241Z"
   },
   {
    "duration": 149,
    "start_time": "2023-05-11T11:57:08.246Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-11T11:57:08.397Z"
   },
   {
    "duration": 9,
    "start_time": "2023-05-11T11:57:08.404Z"
   },
   {
    "duration": 43,
    "start_time": "2023-05-11T11:57:08.414Z"
   },
   {
    "duration": 23,
    "start_time": "2023-05-11T11:57:08.492Z"
   },
   {
    "duration": 999,
    "start_time": "2023-05-11T11:57:08.517Z"
   },
   {
    "duration": 274,
    "start_time": "2023-05-11T11:57:09.519Z"
   },
   {
    "duration": 53,
    "start_time": "2023-05-11T11:57:09.795Z"
   },
   {
    "duration": 63,
    "start_time": "2023-05-11T11:57:09.851Z"
   },
   {
    "duration": 989,
    "start_time": "2023-05-11T11:57:09.916Z"
   },
   {
    "duration": 8,
    "start_time": "2023-05-11T11:57:10.907Z"
   },
   {
    "duration": 11,
    "start_time": "2023-05-11T11:57:10.916Z"
   },
   {
    "duration": 9,
    "start_time": "2023-05-11T11:57:10.929Z"
   },
   {
    "duration": 25,
    "start_time": "2023-05-11T11:57:10.939Z"
   },
   {
    "duration": 428,
    "start_time": "2023-05-11T11:57:10.966Z"
   },
   {
    "duration": 212,
    "start_time": "2023-05-11T11:57:11.396Z"
   },
   {
    "duration": 25,
    "start_time": "2023-05-11T11:57:11.610Z"
   },
   {
    "duration": 87,
    "start_time": "2023-05-11T11:57:11.637Z"
   },
   {
    "duration": 138,
    "start_time": "2023-05-11T11:57:11.725Z"
   },
   {
    "duration": 1329,
    "start_time": "2023-05-11T11:57:11.865Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-11T11:57:13.196Z"
   },
   {
    "duration": 21,
    "start_time": "2023-05-11T11:57:13.202Z"
   },
   {
    "duration": 25,
    "start_time": "2023-05-11T11:57:13.225Z"
   },
   {
    "duration": 30,
    "start_time": "2023-05-11T11:57:13.251Z"
   },
   {
    "duration": 630,
    "start_time": "2023-05-11T11:57:13.282Z"
   },
   {
    "duration": 7,
    "start_time": "2023-05-11T11:57:13.914Z"
   },
   {
    "duration": 21,
    "start_time": "2023-05-11T11:57:13.922Z"
   },
   {
    "duration": 21,
    "start_time": "2023-05-11T11:57:13.945Z"
   },
   {
    "duration": 13,
    "start_time": "2023-05-11T11:57:13.967Z"
   },
   {
    "duration": 37,
    "start_time": "2023-05-11T11:57:13.981Z"
   },
   {
    "duration": 27,
    "start_time": "2023-05-11T11:57:14.020Z"
   },
   {
    "duration": 167,
    "start_time": "2023-05-11T11:57:14.049Z"
   },
   {
    "duration": 7,
    "start_time": "2023-05-11T11:57:14.218Z"
   },
   {
    "duration": 152,
    "start_time": "2023-05-11T11:57:14.226Z"
   },
   {
    "duration": 3,
    "start_time": "2023-05-11T11:57:14.380Z"
   },
   {
    "duration": 7948,
    "start_time": "2023-05-11T11:57:14.395Z"
   },
   {
    "duration": 19,
    "start_time": "2023-05-11T11:57:22.345Z"
   },
   {
    "duration": 10,
    "start_time": "2023-05-11T11:59:32.385Z"
   },
   {
    "duration": 123,
    "start_time": "2023-05-11T11:59:33.975Z"
   },
   {
    "duration": 6,
    "start_time": "2023-05-11T11:59:50.065Z"
   },
   {
    "duration": 148,
    "start_time": "2023-05-11T11:59:58.346Z"
   },
   {
    "duration": 10,
    "start_time": "2023-05-11T12:00:10.621Z"
   },
   {
    "duration": 5471,
    "start_time": "2023-05-11T12:00:20.177Z"
   },
   {
    "duration": 2118,
    "start_time": "2023-05-11T12:00:36.293Z"
   },
   {
    "duration": 1289,
    "start_time": "2023-05-11T12:00:38.414Z"
   },
   {
    "duration": 3,
    "start_time": "2023-05-11T12:00:39.705Z"
   },
   {
    "duration": 845,
    "start_time": "2023-05-11T12:00:39.709Z"
   },
   {
    "duration": 3,
    "start_time": "2023-05-11T12:00:40.557Z"
   },
   {
    "duration": 159,
    "start_time": "2023-05-11T12:00:40.562Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-11T12:00:40.723Z"
   },
   {
    "duration": 7,
    "start_time": "2023-05-11T12:00:40.729Z"
   },
   {
    "duration": 67,
    "start_time": "2023-05-11T12:00:40.738Z"
   },
   {
    "duration": 22,
    "start_time": "2023-05-11T12:00:40.806Z"
   },
   {
    "duration": 1015,
    "start_time": "2023-05-11T12:00:40.830Z"
   },
   {
    "duration": 268,
    "start_time": "2023-05-11T12:00:41.846Z"
   },
   {
    "duration": 77,
    "start_time": "2023-05-11T12:00:42.116Z"
   },
   {
    "duration": 35,
    "start_time": "2023-05-11T12:00:42.196Z"
   },
   {
    "duration": 1009,
    "start_time": "2023-05-11T12:00:42.232Z"
   },
   {
    "duration": 9,
    "start_time": "2023-05-11T12:00:43.243Z"
   },
   {
    "duration": 12,
    "start_time": "2023-05-11T12:00:43.254Z"
   },
   {
    "duration": 7,
    "start_time": "2023-05-11T12:00:43.267Z"
   },
   {
    "duration": 22,
    "start_time": "2023-05-11T12:00:43.293Z"
   },
   {
    "duration": 421,
    "start_time": "2023-05-11T12:00:43.316Z"
   },
   {
    "duration": 212,
    "start_time": "2023-05-11T12:00:43.739Z"
   },
   {
    "duration": 25,
    "start_time": "2023-05-11T12:00:43.953Z"
   },
   {
    "duration": 76,
    "start_time": "2023-05-11T12:00:43.980Z"
   },
   {
    "duration": 150,
    "start_time": "2023-05-11T12:00:44.058Z"
   },
   {
    "duration": 1333,
    "start_time": "2023-05-11T12:00:44.209Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-11T12:00:45.543Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-11T12:00:45.550Z"
   },
   {
    "duration": 32,
    "start_time": "2023-05-11T12:00:45.556Z"
   },
   {
    "duration": 25,
    "start_time": "2023-05-11T12:00:45.590Z"
   },
   {
    "duration": 605,
    "start_time": "2023-05-11T12:00:45.617Z"
   },
   {
    "duration": 7,
    "start_time": "2023-05-11T12:00:46.224Z"
   },
   {
    "duration": 10,
    "start_time": "2023-05-11T12:00:46.232Z"
   },
   {
    "duration": 3,
    "start_time": "2023-05-11T12:00:46.244Z"
   },
   {
    "duration": 9,
    "start_time": "2023-05-11T12:00:46.248Z"
   },
   {
    "duration": 16,
    "start_time": "2023-05-11T12:00:46.259Z"
   },
   {
    "duration": 8,
    "start_time": "2023-05-11T12:00:46.276Z"
   },
   {
    "duration": 152,
    "start_time": "2023-05-11T12:00:46.294Z"
   },
   {
    "duration": 7,
    "start_time": "2023-05-11T12:00:46.448Z"
   },
   {
    "duration": 162,
    "start_time": "2023-05-11T12:00:46.457Z"
   },
   {
    "duration": 2,
    "start_time": "2023-05-11T12:00:46.621Z"
   },
   {
    "duration": 8068,
    "start_time": "2023-05-11T12:00:46.629Z"
   },
   {
    "duration": 16,
    "start_time": "2023-05-11T12:00:54.699Z"
   },
   {
    "duration": 165,
    "start_time": "2023-05-11T12:00:54.718Z"
   },
   {
    "duration": 113248,
    "start_time": "2023-05-11T12:00:54.893Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-11T12:02:48.143Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-11T12:02:48.149Z"
   },
   {
    "duration": 730394,
    "start_time": "2023-05-11T12:02:48.156Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-11T12:14:58.552Z"
   },
   {
    "duration": 84141,
    "start_time": "2023-05-11T12:14:58.557Z"
   },
   {
    "duration": 94,
    "start_time": "2023-05-11T12:16:22.700Z"
   },
   {
    "duration": 755,
    "start_time": "2023-05-11T12:16:22.796Z"
   },
   {
    "duration": 14,
    "start_time": "2023-05-11T12:16:23.553Z"
   },
   {
    "duration": 169,
    "start_time": "2023-05-11T12:16:23.569Z"
   },
   {
    "duration": 43,
    "start_time": "2023-05-11T12:16:23.740Z"
   },
   {
    "duration": 16,
    "start_time": "2023-05-11T12:16:23.785Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-11T12:16:23.803Z"
   },
   {
    "duration": 17,
    "start_time": "2023-05-11T12:16:23.810Z"
   },
   {
    "duration": 2,
    "start_time": "2023-05-11T12:16:23.829Z"
   },
   {
    "duration": 10,
    "start_time": "2023-05-11T12:16:23.833Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-11T12:16:23.845Z"
   },
   {
    "duration": 10,
    "start_time": "2023-05-11T12:16:23.852Z"
   },
   {
    "duration": 30,
    "start_time": "2023-05-11T12:16:23.864Z"
   },
   {
    "duration": 31,
    "start_time": "2023-05-11T12:16:23.895Z"
   },
   {
    "duration": 169,
    "start_time": "2023-05-11T12:16:23.928Z"
   },
   {
    "duration": 10768,
    "start_time": "2023-05-12T09:43:36.001Z"
   },
   {
    "duration": 1549,
    "start_time": "2023-05-12T09:43:46.771Z"
   },
   {
    "duration": 3,
    "start_time": "2023-05-12T09:43:48.322Z"
   },
   {
    "duration": 848,
    "start_time": "2023-05-12T09:43:48.328Z"
   },
   {
    "duration": 3,
    "start_time": "2023-05-12T09:43:49.178Z"
   },
   {
    "duration": 155,
    "start_time": "2023-05-12T09:43:49.183Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-12T09:43:49.341Z"
   },
   {
    "duration": 30,
    "start_time": "2023-05-12T09:43:49.347Z"
   },
   {
    "duration": 60,
    "start_time": "2023-05-12T09:43:49.379Z"
   },
   {
    "duration": 22,
    "start_time": "2023-05-12T09:43:49.441Z"
   },
   {
    "duration": 1114,
    "start_time": "2023-05-12T09:43:49.489Z"
   },
   {
    "duration": 305,
    "start_time": "2023-05-12T09:43:50.605Z"
   },
   {
    "duration": 84,
    "start_time": "2023-05-12T09:43:50.913Z"
   },
   {
    "duration": 41,
    "start_time": "2023-05-12T09:43:50.999Z"
   },
   {
    "duration": 1136,
    "start_time": "2023-05-12T09:43:51.042Z"
   },
   {
    "duration": 11,
    "start_time": "2023-05-12T09:43:52.188Z"
   },
   {
    "duration": 18,
    "start_time": "2023-05-12T09:43:52.201Z"
   },
   {
    "duration": 8,
    "start_time": "2023-05-12T09:43:52.221Z"
   },
   {
    "duration": 71,
    "start_time": "2023-05-12T09:43:52.230Z"
   },
   {
    "duration": 476,
    "start_time": "2023-05-12T09:43:52.303Z"
   },
   {
    "duration": 243,
    "start_time": "2023-05-12T09:43:52.781Z"
   },
   {
    "duration": 26,
    "start_time": "2023-05-12T09:43:53.026Z"
   },
   {
    "duration": 85,
    "start_time": "2023-05-12T09:43:53.055Z"
   },
   {
    "duration": 134,
    "start_time": "2023-05-12T09:43:53.142Z"
   },
   {
    "duration": 1383,
    "start_time": "2023-05-12T09:43:53.278Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-12T09:43:54.662Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-12T09:43:54.669Z"
   },
   {
    "duration": 18,
    "start_time": "2023-05-12T09:43:54.691Z"
   },
   {
    "duration": 17,
    "start_time": "2023-05-12T09:43:54.711Z"
   },
   {
    "duration": 633,
    "start_time": "2023-05-12T09:43:54.730Z"
   },
   {
    "duration": 7,
    "start_time": "2023-05-12T09:43:55.365Z"
   },
   {
    "duration": 15,
    "start_time": "2023-05-12T09:43:55.374Z"
   },
   {
    "duration": 2,
    "start_time": "2023-05-12T09:43:55.391Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-12T09:43:55.396Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-12T09:43:55.402Z"
   },
   {
    "duration": 10,
    "start_time": "2023-05-12T09:43:55.409Z"
   },
   {
    "duration": 189,
    "start_time": "2023-05-12T09:43:55.421Z"
   },
   {
    "duration": 8,
    "start_time": "2023-05-12T09:43:55.612Z"
   },
   {
    "duration": 170,
    "start_time": "2023-05-12T09:43:55.622Z"
   },
   {
    "duration": 3,
    "start_time": "2023-05-12T09:43:55.795Z"
   },
   {
    "duration": 5,
    "start_time": "2023-05-12T09:43:55.800Z"
   },
   {
    "duration": 3,
    "start_time": "2023-05-12T09:43:55.807Z"
   },
   {
    "duration": 4,
    "start_time": "2023-05-12T09:43:55.812Z"
   },
   {
    "duration": 185797,
    "start_time": "2023-05-12T09:43:55.818Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-12T09:47:01.617Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-12T09:47:01.618Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-12T09:47:01.619Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-12T09:47:01.621Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-12T09:47:01.622Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-12T09:47:01.622Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-12T09:47:01.623Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-12T09:47:01.625Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-12T09:47:01.625Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-12T09:47:01.626Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-12T09:47:01.628Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-12T09:47:01.629Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-12T09:47:01.630Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-12T09:47:01.631Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-12T09:47:01.632Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-12T09:47:01.634Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-12T09:47:01.635Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-12T09:47:01.636Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-12T09:47:01.637Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-12T09:47:01.638Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-12T09:47:01.640Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-12T09:47:01.642Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-12T09:47:01.643Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-12T09:47:01.644Z"
   },
   {
    "duration": 0,
    "start_time": "2023-05-12T09:47:01.646Z"
   },
   {
    "duration": 8536,
    "start_time": "2023-07-10T11:37:11.607Z"
   },
   {
    "duration": 1691,
    "start_time": "2023-07-10T11:37:20.146Z"
   },
   {
    "duration": 4,
    "start_time": "2023-07-10T11:37:21.839Z"
   },
   {
    "duration": 958,
    "start_time": "2023-07-10T11:37:21.845Z"
   },
   {
    "duration": 4,
    "start_time": "2023-07-10T11:37:22.806Z"
   },
   {
    "duration": 272,
    "start_time": "2023-07-10T11:37:22.812Z"
   },
   {
    "duration": 5,
    "start_time": "2023-07-10T11:37:23.087Z"
   },
   {
    "duration": 247,
    "start_time": "2023-07-10T11:37:23.094Z"
   },
   {
    "duration": 244,
    "start_time": "2023-07-10T11:37:23.344Z"
   },
   {
    "duration": 22,
    "start_time": "2023-07-10T11:37:23.591Z"
   },
   {
    "duration": 1043,
    "start_time": "2023-07-10T11:37:23.616Z"
   },
   {
    "duration": 310,
    "start_time": "2023-07-10T11:37:24.662Z"
   },
   {
    "duration": 79,
    "start_time": "2023-07-10T11:37:24.974Z"
   },
   {
    "duration": 64,
    "start_time": "2023-07-10T11:37:25.055Z"
   },
   {
    "duration": 1163,
    "start_time": "2023-07-10T11:37:25.121Z"
   },
   {
    "duration": 10,
    "start_time": "2023-07-10T11:37:26.286Z"
   },
   {
    "duration": 62,
    "start_time": "2023-07-10T11:37:26.309Z"
   },
   {
    "duration": 21,
    "start_time": "2023-07-10T11:37:26.374Z"
   },
   {
    "duration": 60,
    "start_time": "2023-07-10T11:37:26.397Z"
   },
   {
    "duration": 426,
    "start_time": "2023-07-10T11:37:26.459Z"
   },
   {
    "duration": 212,
    "start_time": "2023-07-10T11:37:26.887Z"
   },
   {
    "duration": 32,
    "start_time": "2023-07-10T11:37:27.101Z"
   },
   {
    "duration": 160,
    "start_time": "2023-07-10T11:37:27.135Z"
   },
   {
    "duration": 142,
    "start_time": "2023-07-10T11:37:27.297Z"
   },
   {
    "duration": 1449,
    "start_time": "2023-07-10T11:37:27.442Z"
   },
   {
    "duration": 5,
    "start_time": "2023-07-10T11:37:28.893Z"
   },
   {
    "duration": 20,
    "start_time": "2023-07-10T11:37:28.900Z"
   },
   {
    "duration": 21,
    "start_time": "2023-07-10T11:37:28.925Z"
   },
   {
    "duration": 45,
    "start_time": "2023-07-10T11:37:28.948Z"
   },
   {
    "duration": 680,
    "start_time": "2023-07-10T11:37:28.995Z"
   },
   {
    "duration": 8,
    "start_time": "2023-07-10T11:37:29.677Z"
   },
   {
    "duration": 25,
    "start_time": "2023-07-10T11:37:29.687Z"
   },
   {
    "duration": 9,
    "start_time": "2023-07-10T11:37:29.715Z"
   },
   {
    "duration": 11,
    "start_time": "2023-07-10T11:37:29.726Z"
   },
   {
    "duration": 16,
    "start_time": "2023-07-10T11:37:29.739Z"
   },
   {
    "duration": 10,
    "start_time": "2023-07-10T11:37:29.757Z"
   },
   {
    "duration": 204,
    "start_time": "2023-07-10T11:37:29.769Z"
   },
   {
    "duration": 8,
    "start_time": "2023-07-10T11:37:29.975Z"
   },
   {
    "duration": 216,
    "start_time": "2023-07-10T11:37:29.985Z"
   },
   {
    "duration": 6,
    "start_time": "2023-07-10T11:37:30.203Z"
   },
   {
    "duration": 111,
    "start_time": "2023-07-10T11:37:30.211Z"
   },
   {
    "duration": 59,
    "start_time": "2023-07-10T11:37:30.324Z"
   },
   {
    "duration": 252,
    "start_time": "2023-07-10T11:37:30.385Z"
   },
   {
    "duration": 507931,
    "start_time": "2023-07-10T11:37:30.639Z"
   },
   {
    "duration": 5,
    "start_time": "2023-07-10T11:45:58.572Z"
   },
   {
    "duration": 34,
    "start_time": "2023-07-10T11:45:58.579Z"
   },
   {
    "duration": 71,
    "start_time": "2023-07-10T11:45:58.615Z"
   },
   {
    "duration": 37,
    "start_time": "2023-07-10T11:45:58.688Z"
   },
   {
    "duration": 1294488,
    "start_time": "2023-07-10T11:45:58.726Z"
   },
   {
    "duration": 4,
    "start_time": "2023-07-10T12:07:33.216Z"
   },
   {
    "duration": 10,
    "start_time": "2023-07-10T12:07:33.222Z"
   },
   {
    "duration": 10,
    "start_time": "2023-07-10T12:07:33.234Z"
   },
   {
    "duration": 20,
    "start_time": "2023-07-10T12:07:33.246Z"
   },
   {
    "duration": 180708,
    "start_time": "2023-07-10T12:07:33.269Z"
   },
   {
    "duration": 7,
    "start_time": "2023-07-10T12:10:33.979Z"
   },
   {
    "duration": 794,
    "start_time": "2023-07-10T12:10:33.988Z"
   },
   {
    "duration": 25,
    "start_time": "2023-07-10T12:10:34.784Z"
   },
   {
    "duration": 169,
    "start_time": "2023-07-10T12:10:34.811Z"
   },
   {
    "duration": 58,
    "start_time": "2023-07-10T12:10:34.982Z"
   },
   {
    "duration": 15,
    "start_time": "2023-07-10T12:10:35.042Z"
   },
   {
    "duration": 20,
    "start_time": "2023-07-10T12:10:35.059Z"
   },
   {
    "duration": 35,
    "start_time": "2023-07-10T12:10:35.081Z"
   },
   {
    "duration": 28,
    "start_time": "2023-07-10T12:10:35.118Z"
   },
   {
    "duration": 30,
    "start_time": "2023-07-10T12:10:35.148Z"
   },
   {
    "duration": 21,
    "start_time": "2023-07-10T12:10:35.180Z"
   },
   {
    "duration": 43,
    "start_time": "2023-07-10T12:10:35.203Z"
   },
   {
    "duration": 26,
    "start_time": "2023-07-10T12:10:35.247Z"
   },
   {
    "duration": 45,
    "start_time": "2023-07-10T12:10:35.275Z"
   },
   {
    "duration": 130,
    "start_time": "2023-07-10T12:10:35.321Z"
   }
  ],
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.5"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": true,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
